·您的位置: 首页 » 资源教程 » 编程开发 » JAVA、JSP » java编写TCP方式的通信程序

java编写TCP方式的通信程序

类别: JAVA教程  评论数:0 总得分:0
 

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





-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1