孙岩的WEB LOG

孙岩的WEB LOG

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  12 随笔 :: 7 文章 :: 1 评论 :: 0 Trackbacks
作者: ∣来源:JavaResearch原文地址2005-7-19

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();
 }
}
posted on 2005-11-15 12:37 孙 岩 阅读(116) 评论(0)  编辑 收藏 引用 所属分类: JAVA
只有注册用户登录后才能发表评论。