socket通讯源码.txt

来自「实现SOCKET通信 分为服务端源程序和客户端源程序两部分」· 文本 代码 · 共 123 行

TXT
123
字号
//ServeOneSocket.java 服务端源程序 

import java.io.*; 
import java.net.*; 

public class ServeOneSocket extends Thread { 

private Socket socket; 
private BufferedReader in; 
private PrintWriter out; 
private String content; 

/** 
* Constructor 
*/ 
public ServeOneSocket(Socket s,String c)throws IOException { 
socket=s; 
content=c; 
in=new BufferedReader( 
new InputStreamReader( 
socket.getInputStream())); 
//enable auto-flush 
out=new PrintWriter( 
new BufferedWriter( 
new OutputStreamWriter( 
socket.getOutputStream())),true); 
start();//calls run() 
} 

public void run(){ 
try{ 
while (true){ 
String str=in.readLine(); 
if (str.equals("END"))break; 
System.out.println("Echoing:"+str); 
out.println(str); 
out.println(content); 
} 
System.out.println("Closing..."); 
}catch(IOException e){ 
}finally{ 
try{ 
socket.close(); 
}catch(IOException e){} 
} 
} 
} 

//SocketClientThread.java 客户端源程序 

import java.net.*; 
import java.io.*; 

class SocketClientThread extends Thread{ 
private Socket socket; 
private BufferedReader in; 
private PrintWriter out; 
private static int counter=0; 
private int id=counter++; 
private static int threadcount=0; 
final int port=8110; 

public static int threadCount(){ 
return threadcount; 
} 

public SocketClientThread(InetAddress addr){ 
System.out.println("Making client:"+id); 
threadcount++; 
try{ 
socket=new Socket(addr,port); 
}catch(IOException e){ 
} 
try{ 
in=new BufferedReader( 
new InputStreamReader( 
socket.getInputStream())); 
out=new PrintWriter( 
new BufferedWriter( 
new OutputStreamWriter( 
socket.getOutputStream())),true); 
start(); 
}catch(IOException e){ 
try{ 
socket.close(); 
}catch(IOException e2){} 
} 
} 

public void run(){ 
try{ 
for (int i=0;i<25;i++){ 
out.println("Client:"+id+":"+i); 
String str=in.readLine(); 
System.out.println(str); 
} 
out.println("END"); 
}catch(IOException e){ 
}finally{ 
try{ 
socket.close(); 
}catch(IOException e){} 
threadcount--; 
} 
} 
} 

public class MultiSocketClient { 
static final int MAX_THREADS=10; 
/** 
* main 
* @param args 
*/ 
public static void main(String[] args)throws IOException,InterruptedException { 
InetAddress addr=InetAddress.getByName(null); 
while (true){ 
if (SocketClientThread.threadCount()<MAX_THREADS) 
new SocketClientThread(addr); 
Thread.currentThread().sleep(100); 
} 
} 
} 

⌨️ 快捷键说明

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