java实现信息传递

在过去,我们无数次实现了代码的本机运行,一行行的代码在我们的屏幕上飞舞,最终形成种种不同的结果,但是,这些都止于自己的计算机上,在这个万物互联的世界里,通信,是不可缺少的一环,那么,今天就让我们聊聊java通信这个话题。
首先,要建立通信协议,我们首先要知道自己的ip地址
于是,我们呼唤自己万能的cmd,输入指令ipconfig。
java实现信息传递
ipv4地址就是我们的ip地址了
然后我还要再介绍一个概念端口
端口是什么呢?
端口就是ip地址与外界交互的窗口,信息从这里进来,又从这里出去——注意端口只能对一个方向出或者进,不能对一个方向既出又进,也不能同时对两个地方进或者对两个地方出。
通常前1024个端口都是高频节点,它们多半被我们的一些软件比如qq比如浏览器再比如windows基础服务占据,笔者不建议大家使用,事实上笔者用的节点都在一万以后。

		String hostAddress = Inet4Address.getLocalHost().getHostAddress();//这行代码可以获取本机Ip地址的字符串,非常方便吧!
	SocketAddress localAddr  = new InetSocketAddress(hostAddress,14055);//这就是我们发出信息的窗口包括本机ip和使用的端口
		DatagramSocket sendSocket = new DatagramSocket(localAddr);
		//按同样的方法构建一个目标窗口,你可以叫它receSocket

现在我明确了发出者,接收者,接下来只要把数据填进去就好了
那么,现在我想要发送一条"hello world "字符串,但是字符串是没有办法被发送的,所以怎么办呢?
答案是转化成字节数组
那么,发送!

   String sendmsg="hello world"
    byte buffer[]=sendmsg.getBytes();//转化为字节数组
	DatagramPacket dp = new DatagramPacket(buffer, buffer.length, receSocket);//目标写在后面
	sendSocket .send(dp);//发送

这样我们就已经把信息发出去了,但是如果没有完成接收这个步骤的话,这个信息传递一点也不完整,所以,我们还需要一个接收函数

public DatagramPacket recv(DatagramSocket dRecver) {
		byte[] buffer = new byte[50];// 设置缓冲区
		DatagramPacket packet = new DatagramPacket(buffer, buffer.length);// 接收包
		try {
			dRecver.receive(packet);// 接收消息
		} catch (IOException e) {
			e.printStackTrace();
		}
		return packet;// 返回包
	}

不要忘了在send和receive外加上while循环,否则你是难以收到这条消息的
最后,将包种内容转译输出,得到结果。

				DatagramPacket packet = cen.recv(recvSocket);
				String data ;
				data = packet.getData().toString;
				system.out.println(data);

这样我们就完成了一次简单的信息传递,你可以结合监听器和界面实现一个简易的双向聊天室甚至多人聊天室了,快动手试试吧!