使用 C++ (VC6、VS2003、VS2005、GCC4.1.2、GCC3.2.2)或 java(JDK1.6.0)两种语言 。
编写一个简单的 2 人点对点聊天工具,一方利用 IP 地址和端口连接另一方,可以相互发送文本信息。
基于Java的写法: //这个类功能是接收对方发来的文本信息 import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class SenderThread extends Thread { //继承Thread类需要实现run()方法public void run() {try { //端口设置为8888 // 注意:接收方的端口和发送方的端口要一致, // 但是同一方的接收和发送两个端口不能相同 // 例如:A,B互发信息,A的发送端口为8888,接收端口为9999, // 则B的发送端口为9999,接收端口为8888 DatagramSocket ds = new DatagramSocket(8888); byte[] buf = new byte[1024]; //数据载体,这里是存放接收到的信息,设置缓存大小为1024; DatagramPacket dp = new DatagramPacket(buf, 0, buf.length); while (true) { //接收文本信息 ds.receive(dp); //将接收到的信息保存到字符串,并打印出来 String s = new String(dp.getData(), 0, dp.getLength()); System.out.println(s); } } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } // 该类的功能是发送数据报信息 import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Scanner; public class Sender { public static void main(String[] args) throws Exception { //首先启动自己的接收的那个类,一直接收着对方发来的信息 new SenderThread().start(); DatagramSocket ds = new DatagramSocket(); Scanner sc = new Scanner(System.in); while (true) { //从键盘上输入 String s = sc.nextLine(); //将要发送的信息封装好 //各参数的意义: //(要发送的数据:Byte[]类型,起始位置,长度,接收方的IP地址,发送端口) DatagramPacket dp = new DatagramPacket(s.getBytes(), 0, s.getBytes().length, InetAddress.getByName("10.40.8.7"), 8889); //将数据发送出去 ds.send(dp); } } }