A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘孝泽 中级黑马   /  2014-7-17 00:02  /  968 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package duoxiancheng;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketException;
import java.util.Scanner;

//多线程聊天】
public class LiaoTian {
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                new Receive().start();
                new Send().start();
        }

}
class Receive extends Thread{
        public void run(){
                try {
                        DatagramSocket socket = new DatagramSocket(4444);
                        DatagramPacket packet = new DatagramPacket(new byte[1024],1024);
                        while(true){
                                socket.receive(packet);//接受
                                byte[] arr = packet.getData();//转为字节数组
                                int len = packet.getLength();//获取长度
                                String str = new String(arr,0,len);//转换为字符串
                                String ip = packet.getAddress().getHostAddress();//获取ip地址
                                int port = packet.getPort();//获取端口号
                                System.out.println(ip+":"+port+":"+str);//打印
                        }
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }
}
class Send extends Thread{
        public void run(){
                Scanner sc = new Scanner(System.in);
                try {
                        DatagramSocket socket = new DatagramSocket();
                        while(true){
                                String line = sc.nextLine();
                                if("quit".equals(line))
                                        break;
                                DatagramPacket packet = new DatagramPacket(line.getBytes(),line.getBytes().length,InetAddress.getByName("127.0.0.1"), 4444);
                                socket.send(packet);//发送
                                //
                        }
                        socket.close();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
               
               
        }
}



运行后是这样的

da
127.0.0.1:59677:da
ddddd
127.0.0.1:59677:ddddd
这里的端口号为什么不是我程序里面的4444呢?

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

3 个回复

倒序浏览
好像你获取的是发送端的端口
回复 使用道具 举报
服务器的接收端的端口你打印一下,看看是不是一样的。
回复 使用道具 举报
mytongyong 发表于 2014-7-17 06:58
服务器的接收端的端口你打印一下,看看是不是一样的。

饿 好的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马