网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  java编写tcp方式的通信程序     
  文章作者:未知  文章来源:水木森林  
  查看:55次  录入:管理员--2007-11-17  
 


java api中封装了大量的函数,供编写网络通信程序时使用.
这使得java在网络方面具有强大的功能.
用java编写tcp方式的通信程序比较简单,但也有一些问题需要注意.

以下为监听主程序,监听程序在发现客户端连接后,启动一个会话socket线程,以实现实时发送,接收信息
和多客户端同时工作.
import java.io.*;
import java.lang.*;
import java.net.serversocket;
import java.net.socket;
//主程序一直处于监听状态,有连接则启动一个线程进行处理,以实现多个客户端
public class listenserve
{
private serversocket ss;
private boolean listening=true;
public listenserve()
{
  init();//初始化
  lisn();//启动监听
}
public void init()
{
  try
  {
   ss=new serversocket(10015,10);
  }
  catch(ioexception ie)
  {
    system.out.println("无法在10015端口监听");
    ie.printstacktrace();
  }
}
public void lisn()
{
  try
  {
   while(listening)
    new thread(new dialogserve(ss.accept())).start();
    }
   catch(ioexception ie)
   {ie.printstacktrace();}
}
public static void main(string args[])
{
  new listenserve();
}
}

//以下为会话主程序
应该特别注意,如果客户端先关闭,会话socket中可能抛出socketexception:connection reset
这应该在程序中进行处理,这也是较易忽略的问题.
import java.io.*;
import java.lang.*;
import java.net.serversocket;
import java.net.socket;
import java.net.socketexception;
public class dialogserve implements runnable
{
private socket s;
private inputstream in;
private string rev,temp;
private byte b[];
private int len;
public dialogserve(socket ss)
{
  s=ss;
  b=new byte[1024];
  try
  {
  in=s.getinputstream();
  }catch(ioexception ie)
  {
   ie.printstacktrace();
   }
  rev="";
}
public void run()
{
  try
  {
   while(s.isconnected()==true)
   {
    if((len=in.read(b))!=-1)
    {
     temp=new string(b,0,len);
      rev+=temp;
      system.out.print(rev);
      temp=null;
      thread.sleep(1000);
    }
   }
   in.close();
   s.close();
   system.out.println("会话socket已断开!");
  }
  catch(socketexception se)
  {
   system.out.println("客户端已断开!");
    system.exit(0);
  }
  catch(ioexception io)
  {
   io.printstacktrace();
   system.exit(0);
  }
  catch(interruptedexception ire)
  { ire.printstacktrace();}
}
}
//以下为客户端主程序
import java.io.*;
import java.net.socket;
import java.lang.*;
public class client
{
private socket con;//客户端连接socket
private outputstream out;
private string sen;
private byte b[];
public client()
{
  clientinit();
}
public void clientinit()
{
  try
  {
   con=new socket("localhost",10015);
   con.setsotimeout(10000);
   b=new byte[1024];
   outputstream out=con.getoutputstream();
   sen="hello serve,以tcp方式发送数据!";
   b=sen.getbytes();
   out.write(b);
   out.flush();
   out.close();
   con.close();
  }
  catch(ioexception ie)
  {
   ie.tostring();
  }
}
public static void main(string args[])
{
  new client();
}
}
总的来说,以上所列代码较为简单,但已基本反映出java编写简单tcp通信程序的原理.
希望各位朋友批评.大家共同学习交流.

 
 
上一篇: java:咖啡的香气飘满互联网    下一篇: java程序转成exe文件
  相关文档
面向对象思想之 -- 理解类和对象 11-17
java中动态性实例解释 11-17
在java中调用oracle的过程和函数 11-17
scjp考试中的线程题目分析 11-17
.net新手学堂:lambda表达式的一般应用 06-12
ln2 属性 11-16
认识p-unit:一款开源的性能测试工具 11-17
java学习:了解什么叫做javabean 11-16
java语言异常处理的陋习展播 11-20
实例讲解在jsp开发中的对象和范围属性 11-23
字节数最小的中国城市javascrip列表(转) 11-17
java实现的18位身份证格式验证算法 11-17
深入浅出学习java设计模式之迭代器模式 11-16
j2me学习--了解midlet的生命周期(图) 11-17
java 数据对象(jdo)介绍(1) 11-16
jstl入门(1):表达式语言 11-17
think in java 3rd 中文版10 11-17
java 2d开发技巧之“灯光与阴影” 11-17
java/jsp学习系列之resin+apache安装 11-17
递归删除与给定的文件名不符的文件 03-25
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息