/**
* Socket 编程 客户端
*/
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Random;
public class QQClient {
private static String server = "127.0.0.1";
private static int port = 10001;
private static final Random rand = new Random(System.currentTimeMillis());
public static void main(String[] args) {
try {
Socket skt = new Socket(server, port);
OutputStream os = skt.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
String request = String.valueOf(rand.nextInt(100));
dos.writeUTF(request);
InputStream is = skt.getInputStream();
DataInputStream dis = new DataInputStream(is);
String response = dis.readUTF();
skt.close();
System.out.println(response);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* Socket 编程 服务端
*/
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class QQServer implements Runnable {
private static int port = 10001;
private static ServerSocket sskt = null;
private Socket skt;
public QQServer(Socket skt) {
this.skt = skt;
}
public void run() {
try {
InputStream is = skt.getInputStream();
DataInputStream dis = new DataInputStream(is);
String request = dis.readUTF();
System.out.println(request);
OutputStream os = skt.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
String response = "Welcome " + request;
dos.writeUTF(response);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
sskt = new ServerSocket(port);
while(true) {
Socket skt = sskt.accept();
QQServer newServer = new QQServer(skt);
Thread newThread = new Thread(newServer);
newThread.start();
}
//sskt.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(null != sskt) {
try {
sskt.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}