TCP和UDP编程

来源:互联网 发布:如何删除软件注册表 编辑:程序博客网 时间:2024/06/06 14:09

  TCP编程:

服务器:

1.创建让客户连接的QQ服务器及端口。
ServerSocket ss = new ServerSocket(int port = 8896);


2.监听客户端连接请求,并创建一个新的Socket进行通信。
Socket s = ss.accept();


3. 创建接收和处理客户端消息的容器(流)。
  InputStream in = s.getInputStream();//用来接收客户端传过来的数据的输入流
  OutputStream out = s.getOutputStream();//可以返回数据给客户端的输出流

 
(4.创建不同的容器(流)接收数据,BufferInputStream,BufferOutputStream)


5.  获取客户端数据并(处理)返回。
    inputStream.read();//接收客户端数据
    outputStream.write();//写给客户端

 
6.关闭服务器,释放资源。
 s.close();
 ss.close();
 
 
 
 客户端:
1.创建与QQ服务器通信的Socket(找到QQ服务器IP及端口)。
  InetAddress addr = InetAddress.getByName("127.0.0.1");
  Socket s = new Socket(addr, int port = 8896);
 
2. 创建接收和处理服务端消息的容器(流)。
  InputStream in = s.getInputStream();//用来接收服务端传过来的数据的输入流
  OutputStream out = s.getOutputStream();//可以返回数据给服务端的输出流
 
 3. 传数据给服务端,接收服务端传输的数据
    OutputStream.write("发送数据给QQ服务器".getBytes());
    inputStream.read(b);

4.关闭各个流对象,结束通信。
 socket.close(); //通过调用close()方法关闭与服务器端的连接
 
 
DatagramPacket类包含具体的要传输的信息,这些信息被封装在称为数据报(Datagram)的UDP包中。
DatagramSocket类用于收发UDP数据报。

 
 UDP编程:
(1)建立一个DatagramSocket对象;
   DatagramSocket socket = new DatagramSocket(port);
    
(2)创建用于接收数据的DatagramPacket对象;
   DatagramPacket receivePacket = new DatagramPacket(buf, buf.length);

 (3)利用DatagramSocket类方法receive()接收客户端数据。
  socket.receive(receivePacket);
 
  (4)处理客户端数据
  data = data.toUpperCase();
 
  (5)将处理好的数据封装到发送的信封里
 DatagramPacket sendPacket = new DatagramPacketstr(data.getBytes(),
     data.getBytes().length, clientAddr, clientport);
 
  (6)利用DatagramSocket类方法send()发送数据。
    socket.send(sendPacket);

0 0
原创粉丝点击