您的位置:首页 > 其它

使用socket 将 服务器端和客户端通信的例子

2011-09-01 15:33 288 查看
1:服务器端代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.*;
import java.util.*;
import java.io.*;
public class ServerTest {
final static int SERVER_PORT = 8001;
public static void main(String[] args) {
Server server;
String clientRequest;
BufferedReader reader;
PrintWriter writer;

server = new Server(SERVER_PORT);
reader = new BufferedReader(new InputStreamReader(server.in));
writer = new PrintWriter(new OutputStreamWriter(server.out),true);
writer.println("java test server v0.03"+ new Date());
while(true){
try{
clientRequest = reader.readLine();
System.out.println("client says:"+clientRequest);
if(clientRequest.startsWith("HELP")){
writer.println(" vocabulary:HELP QUIT");
}else{
if(clientRequest.startsWith("QUIT")){
System.exit(0);
}else{
writer.println("err : command "+clientRequest+"not understood");
}
}
}catch(IOException e){
System.out.println("IOEx IN server" + e);
}
}

}

}
class Server{
private ServerSocket server;
private Socket socket;
public InputStream in;
public OutputStream out;
public Server(int port){
try {
server = new ServerSocket(port);
System.out.println("serverSocket before accept:"+server);
System.out.println("java test server v0.03,on-line!");
socket = server.accept();
System.out.println("serversocket after accept:"+server);
in = socket.getInputStream();
out = socket.getOutputStream();
} catch (IOException e1) {
System.out.println("server constructor IOEx:"+e1);
}
}

}


2:客户端代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientTest {
public static void main(String[] args) {
String welcome,response;
Client client;
BufferedReader reader;
PrintWriter writer;
client = new Client("localhost",8001);

try {
reader = new BufferedReader(new InputStreamReader(client.in));
writer = new PrintWriter(new OutputStreamWriter(client.out),true);
welcome = reader.readLine();
System.out.println("server says:"+ welcome);
System.out.println("HELP");
writer.println("HELP");
response = reader.readLine();
System.out.println("server responds:"+response);
System.out.println("QUIT");
writer.println("QUIT");
} catch (IOException e) {
System.out.println("IOException in client.in.readln()");
e.printStackTrace();
}
try{
Thread.sleep(2000);
}catch(Exception ignored){}
}
}

class Client{
public InputStream in;
public OutputStream out;
private Socket client;

public Client(String host,int port){
try {
client  = new Socket(host,port);
System.out.println("client socket:"+ client);
in = client.getInputStream();
out = client.getOutputStream();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}


3:先运行客户端,再运行客户端。便可看到通信结果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: