Client繼承Thread是為了模擬多線程
Server code:
package com.test;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer extends Thread {
public static final int LISTEN_PORT = 8188;
Socket socket = null;
public SocketServer(Socket socket) {
this.socket = socket;
}
public void run() {
InputStream in = null;
OutputStream out = null;
try {
in = socket.getInputStream();
out = socket.getOutputStream();
byte[] buffer = new byte[1024];
int len = in.read(buffer, 0, 1024);
String inData = new String(buffer);
System.out.println("request="+inData);
String response="Server return:"+inData;
System.out.println("response="+response);
out.write(response.getBytes());
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
if (socket != null) {
socket.close();
}
} catch (Exception closeErr) {
System.out.println("close socket fail");
}
}
}
public static void main(String[] args) {
ServerSocket server = null;
Socket socket = null;
try {
server = new ServerSocket(LISTEN_PORT, 0,InetAddress.getByName("127.0.0.1"));
System.out.println("started: " + server);
while (true) {
// listen request
socket = server.accept();
// new thread execution services
SocketServer thread = new SocketServer(socket);
thread.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Client code:package com.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
public class SocketClient extends Thread {
public static final int PORT = 8188;
public void run() {
int i = 1;
InetAddress addr = null;
Socket socket = null;
OutputStream out = null;
InputStream in = null;
while (true) {
try {
socket = new Socket();
addr = InetAddress.getByName("127.0.0.1");
socket.connect(new InetSocketAddress(addr, PORT), 30000);
out = socket.getOutputStream();
out.write(("client sent hello " + i).getBytes());
out.flush();
in = socket.getInputStream();
byte[] buffer = new byte[1024];
int len = in.read(buffer, 0, 1024);
String inData = new String(buffer);
System.out.println(inData);
i++;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws Exception {
SocketClient SocketClient1 = new SocketClient();
SocketClient SocketClient2 = new SocketClient();
SocketClient1.start();
SocketClient2.start();
}
}
沒有留言:
張貼留言