基于TCP协议的socket客户端和服务端
/**
* @author Mr.zhang
* 基于 TCP 协议的 socket 客户端和服务端
*/
package com.serversocket.socket;
import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ServerClient {
/**
* 服务端
* @author Mr.zhang
*
*/
class Server implements Runnable {
private Integer port;
public Server (Integer port) {
this.port = port;
}
byte[] bytes = new byte[1024];
@Override
public void run() {
ServerSocket serverSocket = null;
Socket socket = null;
try {
serverSocket = new ServerSocket(this.port);
while (serverSocket != null) {
socket = serverSocket.accept();
DataInputStream in = new DataInputStream(socket.getInputStream());
DataOutput out = new DataOutputStream(socket.getOutputStream());
in.read(bytes, 0, bytes.length);
System.out.println("服务端接收参数为:"+new String(bytes,"utf-8"));
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String nowText = sdf.format(new Date());
StringBuffer sb = new StringBuffer();
sb.append("服务端发送当前时间为:").append(nowText);
out.write(sb.toString().getBytes("utf-8"));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 客户端
* @author Mr.zhang
*
*/
class Client implements Runnable {
private String host;
private Integer port;
public Client (String host , Integer port) {
this.host = host;
this.port = port;
}
byte [] bytes = new byte[1024];
@Override
public void run() {
Socket socket = null;
try {
socket = new Socket(this.host , this.port);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowText = sdf.format(new Date());
DataInputStream in = new DataInputStream(socket.getInputStream());
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
String writeText = nowText ;
out.write(writeText.getBytes("utf-8"));
in.read(bytes , 0 , bytes.length);
System.out.println("客户端接收参数为:"+new String(bytes , "utf-8"));
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) throws InterruptedException {
new Thread(new ServerClient().new Server(3980) , "server").start();
Thread.sleep(1000);
for (Integer i = 0 ; i < 10 ; i ++) {
new Thread(new ServerClient().new Client("127.0.0.1", 3980)).start();
}
}
}