TCP服务器端
package org.bruce.basic; import java.io.DataInputStream; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; public class TestClient { public static void main(String[] args) { Socket s = null; try { s = new Socket("127.0.0.1", 8888); DataInputStream dis = new DataInputStream(s.getInputStream()); System.out.println(dis.readUTF()); dis.close(); s.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
TCP客户端
package org.bruce.basic; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class TestServer { public static void main(String[] args) { ServerSocket ss = null; try { ss = new ServerSocket(9999); } catch (IOException e) { e.printStackTrace(); } try { while(true) { Socket s = ss.accept(); System.out.println("a client connect!"); DataOutputStream dos = new DataOutputStream(s.getOutputStream()); dos.writeUTF("IPAddress = " + s.getInetAddress() + " Port = " + s.getPort()); dos.close(); s.close(); } } catch (IOException e) { e.printStackTrace(); } } }
UDP服务器端
package org.bruce.basic; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; //UDP传输是一种无连接的数据传输方式,相较于TCP传输,它也是有它存在的道理的 public class UDPServer { public static void main(String[] args) { //以 "字节数组" 的形式开辟一块内存用于缓存接收到的UDP数据包 byte[] buffer = new byte[1024]; //虽然开辟的缓冲内存大小为1024字节,但也可以设置一个小于该值的缓存空间接收数据包 DatagramPacket dp = new DatagramPacket(buffer, buffer.length); DatagramSocket ds = null; try { //监听在UDP 9999 端口 ds = new DatagramSocket(9999); } catch (SocketException e) { e.printStackTrace(); } while(true) { try { //receive() 方法是一个阻塞性方法! ds.receive(dp); } catch (IOException e) { e.printStackTrace(); } //从下一行代码中可以学习到一种用字节数组构造字符串对象的方法 System.out.println(new String(buffer, 0, dp.getLength())); } } }
UDP客户端
package org.bruce.basic; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketException; public class UDPClient { public static void main(String[] args) { //先将 "Hello!" 封装成一个字符串对象,在调用其 getBytes() 方法将其转换成字节数组 //转换成字节数组是为了方便传输 byte[] buffer = (new String("Hello!")).getBytes(); DatagramPacket dp = null; try { //将要发送的数据、要发送到什么地址设置好并打成一个 DatagramPacket 包 dp = new DatagramPacket(buffer, buffer.length, new InetSocketAddress("127.0.0.1", 9999)); } catch (SocketException e) { e.printStackTrace(); } DatagramSocket ds = null; try { //new 一个DatagramSocket对象(即打开一个UDP端口准备从此处发出数据包) ds = new DatagramSocket(9998); ds.send(dp); ds.close(); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
posted on 2010-12-25 17:41 yang3wei 阅读(302) 评论(0) 编辑 收藏 举报