扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
java中封装了大量的socket API,为编写网络通信程序提供了极大的方便。
在计算机网络的学习中,大家都已熟练掌握了TCP/UDP的基本原理,在此不在赘述。仅给出接收端和发送端的源代码,供大家讨论和批评。
发送端代码如下:
//只要稍加改进,即可发送数据
import java.io.*;
import java.lang.*;
import java.net.*;
public class uclient
{
private DatagramSocket cli;
private DatagramPacket pac;
private byte sb[];
private String sen;
public uclient()
{
Init();
}
public void Init()
{
try
{
//指定端口号,避免与其他应用程序发生冲突
cli=new DatagramSocket(10002);
sb=new byte[1024];
sen="UDP方式发送数据";
sb=sen.getBytes();
pac=new DatagramPacket(sb,sb.length,InetAddress.getByName("localhost"),10005);
cli.send(pac);
}
catch(SocketException se)
{
se.printStackTrace();
}
catch(IOException ie)
{
ie.printStackTrace();
}
}
public static void main(String args[])
{
new uclient();
}
}
接收端数据:
//加以改进代码,可以改变接收方式
import java.io.*;
import java.lang.*;
import java.net.*;
public class userve
{
private DatagramSocket ser;
private DatagramPacket pac;
private byte rb[];
private String rev;
public userve()
{
Init();
}
public void Init()
{
try
{
ser=new DatagramSocket(10005);
rb=new byte[1024];
pac=new DatagramPacket(rb,rb.length);
rev="";
int i=0;
while(i==0)//无数据,则循环
{
ser.receive(pac);
i=pac.getLength();
//接收数据
if(i>0)
{
//指定接收到数据的长度,可使接收数据正常显示,开始时很容易忽略这一点
rev=new String(rb,0,pac.getLength());
System.out.println(rev);
i=0;//循环接收
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String args[])
{
new userve();
}
} |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者