java编写TCP方式的通信程序

程序

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

时间: 2025-01-01 14:59:00

java编写TCP方式的通信程序的相关文章

如何编写简单的配合认证的基于JAVA套接字的通信程序

问题描述 我是一个初学者,现在正在编写一个配合认证的基于JAVA套接字的通信程序.老师要求:终端1和终端2要进行通信,必需通过第三台机器的简单认真.哪位高手帮帮忙吧!

求用java编写的各个排序法程序加解析,谢谢!

问题描述 求用java编写的各个排序法程序加解析,谢谢! 解决方案 解决方案二:网上一大推,google一下!解决方案三:http://download.csdn.net/source/3089143

用java编写的猜数小程序一执行就出现停止运行

问题描述 用java编写的猜数小程序一执行就出现停止运行 用java编写的猜数小程序一执行就出现停止运行 这是怎么回事???? 解决方案 报的什么错误?先看个控制台的错误,肯定是某个地方异常 解决方案二: 大哥你错误都不打印出来,别人不知道你那里出错, 解决方案三: 你这不把程序和异常贴出来,谁知道是怎么回事啊. 解决方案四: 是不是产生运行时异常导致程序终止了. 解决方案五: 楼主你啥都不贴别人怎么分析啊 解决方案六: 贴源码和控制台输出啦,大家都怒了. 解决方案七: 是不是没有装jdk

Java基于TCP方式的二进制文件传输_java

一个基于Java Socket协议之上文件传输的完整示例,基于TCP通信完成. 除了基于TCP的二进制文件传输,还演示了JAVA Swing的一些编程技巧,Demo程序 实现主要功能有以下几点: 1.基于Java Socket的二进制文件传输(包括图片,二进制文件,各种文档work,PDF) 2.SwingWorker集合JProgressBar显示实时传输/接受完成的百分比 3.其它一些Swing多线程编程技巧 首先来看一下整个Dome的Class之间的关系图: 下面按照上图来详细解释各个类的

使用Java编写并运行Spark应用程序

我们首先提出这样一个简单的需求: 现在要分析某网站的访问日志信息,统计来自不同IP的用户访问的次数,从而通过Geo信息来获得来访用户所在国家地区分布状况.这里我拿我网站的日志记录行示例,如下所示: 1 121.205.198.92 - - [21/Feb/2014:00:00:07 +0800] "GET /archives/417.html HTTP/1.1" 200 11465 "http://shiyanjun.cn/archives/417.html/" &

配合认证的JAVA通信程序

问题描述 我是一个初学者,现在正在编写一个配合认证的基于JAVA套接字的通信程序.老师要求:终端1和终端2要进行通信,必需通过第三台机器的简单认真.哪位高手帮帮忙吧!

java编写简单的E-mail发送端程序_java

本文实例介绍了简单E-mail发送端程序的Java实现代码,分享给大家供大家参考,具体内容如下 在这个代码中,有几个注意点强调一下: 1.使用 Socket 与 SMTP 邮件服务器取得连接,注意 SMTP 服务器的主机名: 2.使用 data 命令时,若写了 subject (主题)之后,邮件的正文部分必须与 subject 之间有一个空行,即"回车+换行",在代码中则是 \r\n : 3.同样需要将发件人的邮箱用户名.密码进行 BASE64 编码之后再传给 SMTP 服务器: 4.

java-用JAVA编写一个文件路径加密程序怎么样编写

问题描述 用JAVA编写一个文件路径加密程序怎么样编写 各位大神,我想问一下 如何编写一个文件加密程序,可以加密文件的路径,求帮助,或者给一点线索. 解决方案 http://www.cnblogs.com/FCWORLD/archive/2012/10/11/2720306.html 解决方案二: http://blog.sina.com.cn/s/blog_6aa9c7380101e29m.html 解决方案三: 做一个如哈希那样的算法来加密怎么样 解决方案四: 用合适的加密算法加密路径不就行

Java写TCP通信程序的关闭问题

问题描述 在写TCP通信程序时,Java或者C++都会遇到端口无法迅速释放的问题,即在关闭时可能会出现Close_Wait,Time_Wait,Fin_wait_1,Fin_wait_1这四种状态,但是如何修正或者避免这些问题呢???始终没有找到方法.希望大牛们帮帮小弟 解决方案 解决方案二:不懂up解决方案三:貌似java操作不了那么底层吧解决方案四:谢谢解决方案五:2楼但是确实存在这个问题啊,比如一个apache的web服务器,如果有很多client接进来,但是关闭的时候,许多端口都成了cl