,,java使用UDP实现点对点通信

,,java使用UDP实现点对点通信

这篇文章主要为大家详细介绍了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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: