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

📄 tcp_java.java

📁 java编写TCP方式的通信程序
💻 JAVA
字号:
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(); 
} 
} 

⌨️ 快捷键说明

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