這是一個(gè)比較簡(jiǎn)單的例子來(lái)說(shuō)明socket編程,服務(wù)器端使用了多線程來(lái)監(jiān)聽(tīng)客戶端。
服務(wù)器端的代碼:
package SocketTest;
import java.io.*;
import java.net.*;
import java.util.*;
class SocketServer{
public SocketServer(){
Socket incoming;
ServerSocket so;
try{
so= new ServerSocket(8001);
System.out.println("等待客戶端連接。");
while(true){
try{
incoming =
so.accept( );
System.out.println("已連接客戶端。");
GetInfo gi=new
GetInfo(incoming);//調(diào)用線程
} catch (IOException e){
e.printStackTrace();
}
}
}catch (IOException e){
e.printStackTrace();
}
}
public static void main(String[] args){
new SocketServer();
}
private static class GetInfo implements Runnable{ //線程類(lèi)
private Socket incoming;
private String s=null;
private BufferedReader b;
Thread t;
public GetInfo(Socket incoming){
try{
this.incoming=incoming;
b=new BufferedReader(new
InputStreamReader(incoming.getInputStream()));
t=new Thread(this);
t.start();
}catch(IOException e){
e.printStackTrace();
}
}
public void run(){
try{
while (true){
s=b.readLine();
System.out.println(s);
if(s.equals("end")){
break;
}
}
}catch(IOException e){
e.printStackTrace();
}
}
}
}
客戶端的代碼:
package SocketTest;
import java.io.*;
import java.net.*;
import java.util.*;
public class SocketClient{
public static void main(String[] args){
try{
Socket so = new Socket("localhost", 8001);
System.out.println("連接服務(wù)器。");
BufferedReader b=new BufferedReader(new
InputStreamReader(System.in));
OutputStream outStream = so.getOutputStream();
PrintWriter out = new PrintWriter(outStream);
String s=null;
while (true){
s=b.readLine();
out.println("Client:"+s);
out.flush();
if(s.equals("end")){
break;
}
}
}catch (IOException e){
e.printStackTrace();
}
}
}
posted on 2005-10-10 14:04
千山鳥(niǎo)飛絕 閱讀(2691)
評(píng)論(2) 編輯 收藏 所屬分類(lèi):
J2SE