这篇文章主要为大家详细介绍了Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)使用用户数据报协议(用户数据报协议)实现点对点通信,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)使用用户数据报协议(用户数据报协议)实现点对点通信的具体代码,供大家参考,具体内容如下
整体的结构思路:
斯图(男子名)和茶是收发消息的两端;
斯图(男子名)和茶类都是通过启动两个线程完成通信的,这两个线程分别是发消息线程和收消息线程;
斯图(男子名)类中启动的两个线程分别写在两个类里,茶也是这样做。
Stu端及其收发消息代码:
导入Java。io。缓冲阅读器;
导入Java。io。io异常;
导入Java。io。inputstreamreader
导入Java。网。数据报包;
导入Java。网。数据报套接字;
导入Java。网。inet地址;
导入Java。网。套接字异常;
导入Java。网。unknownhostexception
公共课斯图{
公共静态void main(String[] args)引发IOException {
新线程(新StuSendThread('127.0.0.1 ',8888).start();
新螺纹(新结构螺纹(8889))。start();
}
}
导入Java。io。io异常;
导入Java。网。数据报包;
导入Java。网。数据报套接字;
导入Java。网。套接字异常;
公共类结构通用螺纹实现可运行{
专用(同Internationalorganizations)国际组织端口;
公共结构接收线程(内部端口){
this.port=port
}
@覆盖
公共无效运行(){
//创建接收方
DatagramSocket套接字;
尝试{
socket=新数据报套接字(端口);
while(true) {
//准备容器
字节[]缓冲区=新字节[1024];
数据报包d包=新数据报包(buf,buf。长度);
//阻塞式接受数据
尝试{
插座。接收(d包);
} catch (IOException e) {
e。printstacktrace();
}
//分析数据
System.out.println(新字符串(buf));
如果(新字符串(buf).等于('退出'){
打破;
}
}
//释放资源
插座。close();
} catch (SocketException e1) {
E1。printstacktrace();
}
}
}
导入Java。io。缓冲阅读器;
导入Java。io。io异常;
导入Java。io。inputstreamreader
导入Java。网。数据报包;
导入Java。网。数据报套接字;
导入Java。网。inet地址;
导入Java。网。套接字异常;
公共类StuSendThread实现可运行{
私有DatagramSocket套接字;
私人BufferedReader br
字符串IP;
(同Internationalorganizations)国际组织端口;
公共StuSendThread(字符串IP,int端口)抛出套接字异常{
socket=新数据报socket();
br=新缓冲读取器(新输入流读取器(系统。in));
这个IP=IP。
this.port=port
}
@覆盖
公共无效运行(){
while(true) {
//准备数据
br=新缓冲读取器(新输入流读取器(系统。in));
字符串味精
尝试{
msg=br。readline();
字节[]数据=消息。getbytes();
//封装数据
数据报包d packet=新的数据报包(data,data.length,InetAddress.getByName(IP),port);
//发送数据
插座。发送(d包);
如果(消息。等于('退出'){
打破;
}
} catch (IOException e) {
e。printstacktrace();
}
}
//关闭资源
尝试{
br。close();
插座。close();
} catch (IOException e) {
e。printstacktrace();
}
}
}
Tea端及其收发消息代码:
导入Java。io。缓冲阅读器;
导入Java。io。io异常;
导入Java。io。inputstreamreader
导入Java。网。数据报包;
导入Java。网。数据报套接字;
导入Java。网。inet地址;
导入Java。网。套接字异常;
公共类棉线实现可运行{
私有DatagramSocket套接字;
私人BufferedReader br
字符串IP;
(同Internationalorganizations)国际组织端口;
公共TeaSendThread(字符串IP,int端口)抛出套接字异常{
socket=新数据报socket();
br=新缓冲读取器(新输入流读取器(系统。in));
这个IP=IP。
this.port=port
}
@覆盖
公共无效运行(){
while (true) {
//准备数据
br=新缓冲读取器(新输入流读取器(系统。in));
字符串味精
尝试{
msg=br。readline();
字节[]数据=消息。getbytes();
//封装数据
数据报包d packet=新的数据报包(data,data.length,InetAddress.getByName(IP),port);
//发送数据
插座。发送(d包);
如果(消息。等于('退出'){
打破;
}
} catch (IOException e) {
e。printstacktrace();
}
}
//关闭资源
尝试{
br。close();
插座。close();
} catch (IOException e) {
e。printstacktrace();
}
}
}
导入Java。io。io异常;
导入Java。网。数据报包;
导入Java。网。数据报套接字;
导入Java。网。套接字异常;
公共类泪腺实现可运行{
专用(同Internationalorganizations)国际组织端口;
公共停车场(国际港口){
this.port=port
}
@覆盖
公共无效运行(){
//创建接收方
DatagramSocket套接字;
尝试{
socket=新数据报套接字(端口);
while(true) {
//准备容器
字节[]缓冲区=新字节[1024];
数据报包d包=新数据报包(buf,buf。长度);
//阻塞式接受数据
尝试{
插座。接收(d包);
} catch (IOException e) {
e。printstacktrace();
}
//分析数据
System.out.println(新字符串(buf));
如果(新字符串(buf).等于('退出'){
打破;
}
}
//释放资源
插座。close();
} catch (SocketException e1) {
E1。printstacktrace();
}
}
}
导入Java。io。缓冲阅读器;
导入Java。io。io异常;
导入Java。io。inputstreamreader
导入Java。网。数据报包;
导入Java。网。数据报套接字;
导入Java。网。inet地址;
导入Java。网。套接字异常;
公共类棉线实现可运行{
私有DatagramSocket套接字;
私人BufferedReader br
字符串IP;
(同Internationalorganizations)国际组织端口;
公共TeaSendThread(字符串IP,int端口)抛出套接字异常{
socket=新数据报socket();
br=新缓冲读取器(新输入流读取器(系统。in));
这个IP=IP。
this.port=port
}
@覆盖
公共无效运行(){
while (true) {
//准备数据
br=新缓冲读取器(新输入流读取器(系统。in));
字符串味精
尝试{
msg=br。readline();
字节[]数据=消息。getbytes();
//封装数据
数据报包d packet=新的数据报包(data,data.length,InetAddress.getByName(IP),port);
//发送数据
插座。发送(d包);
如果(消息。等于('退出'){
打破;
}
} catch (IOException e) {
e。printstacktrace();
}
}
//关闭资源
尝试{
br。close();
插座。close();
} catch (IOException e) {
e。printstacktrace();
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。