java编写TCP方式的通信程序

来源:互联网 发布:数据透视表怎么合计 编辑:程序博客网 时间:2024/05/18 20:10
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

  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;//客户端连接socketprivate 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通信程序的原理.希望各位朋友批评.大家共同学习交流.

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击