?? echoserverthread.java
字號:
//EchoServerThread.java
import java.io.*;
import java.net.*;
public class EchoServerThread
{
//服務器端的服務端口。
public static final int SERVERPORT = 9999;
public static void main(String[] args )
{
try
{
//已經連接上的客戶端的序號。
int number = 1;
//建立服務器端傾聽套接字。
ServerSocket s = new ServerSocket(SERVERPORT);
System.out.println("Started: " + s);
while(true)
{
//等待并接收請求,建立連接套接字。
Socket incoming = s.accept( );
System.out.println("Connection " + number +
" accepted: ");
System.out.println(incoming);
//啟動一個線程來進行服務器端和客戶端的數據傳輸。
//主程序繼續監聽是否有請求到來。
Thread t = new EchoThread(incoming, number);
t.start();
number++;
}
}
catch (IOException e)
{
System.err.println("IOException");
}
}
}
class EchoThread extends Thread
{
private Socket s;
int n;
public EchoThread(Socket incoming, int number)
{
s = incoming;
n = number;
}
public void run()
{
try
{
//新建網絡連接的輸入流。
BufferedReader in = new BufferedReader
(new InputStreamReader(s.getInputStream()));
//新建網絡連接的自動刷新的輸出流。
PrintWriter out = new PrintWriter
( new BufferedWriter(new OutputStreamWriter(
s.getOutputStream())), true);
System.out.println( "Hello! Enter BYE to exit." );
//回顯客戶端的輸入。
while (true)
{
//從網絡連接讀取一行,即接收客戶端的數據。
String line = in.readLine();
//如果接收到的數據為空(如果直接按Enter,不是空數據),則退出循環,關閉連接。
if (line == null) break;
else
{
if (line.trim().equals("BYE"))
{
System.out.println("The client " + n + " entered BYE!");
System.out.println("Connection " + n + " will be closed!");
break;
}
System.out.println("Echo " + n + ": " + line);
//向網絡連接輸出一行,即向客戶端發送數據。
out.println("Echo " + n + ": " + line);
}
}
//關閉套接字。
s.close();
}
catch (IOException e)
{
System.err.println("IOException");
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -