⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listenserve.java

📁 简单的 socket 编程
💻 JAVA
字号:
/*
java编写TCP方式的通信程序 
Java API中封装了大量的函数,供编写网络通信程序时使用.
这使得java在网络方面具有强大的功能.
用java编写TCP方式的通信程序比较简单,但也有一些问题需要注意.

以下为监听主程序,监听程序在发现客户端连接后,启动一个会话socket线程,以实现实时发送,接收信息
和多客户端同时工作.

总的来说,以上所列代码较为简单,但已基本反映出java编写简单tcp通信程序的原理.
希望各位朋友批评.大家共同学习交流.
*/
package a;
import java.io.*;
import java.lang.*;
import java.net.ServerSocket;
import java.net.Socket;
//import java.io.*;
//import java.lang.*;
//import java.net.ServerSocket;
//import java.net.Socket;
import java.net.SocketException;

//主程序一直处于监听状态,有连接则启动一个线程进行处理,以实现多个客户端
public class Listenserve
{
	private ServerSocket ss;
	private boolean listening=true;

	public Listenserve()
	{
		System.out.println("Server is start...");
	  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
//这应该在程序中进行处理,这也是较易忽略的问题.
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(100);
		}
	   } 
	   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();}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -