首页 > 试题广场 >

使用 C++ (VC6、VS2003、VS2005、GCC4

[问答题]
使用 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); } } }

编辑于 2017-09-15 15:29:27 回复(0)