【IT168技术文档】
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(); } }