JDK-Socket编程-入门
Server端多线程版
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.Charset;
public class ThreadSocketServer {
public void startServer(int port){
ServerSocket server = null;
try{
server = new ServerSocket(port);
while (true){
Socket socket = server.accept();
new Thread(() -> {
try {
InputStream input = socket.getInputStream();
byte[] bytes = new byte[1024];
int len;
StringBuilder sb = new StringBuilder();
while ((len = input.read(bytes)) != -1){
sb.append(new String(bytes, 0, len, "UTF-8"));
}
System.out.println("From client request: " + socket.getInetAddress() + ", data: " + sb.toString());
OutputStream output = socket.getOutputStream();
output.write(("Hello, " + socket.getInetAddress()).getBytes(Charset.forName("UTF-8")));
socket.shutdownOutput();
socket.shutdownInput();
} catch (IOException e) {
e.printStackTrace();
}
}).start();
}
}catch (Exception e){
e.printStackTrace();
}finally {
if(null != server){
try {
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
int port = 8888;
ThreadSocketServer server = new ThreadSocketServer ();
server.startServer(port);
}
}
Client端
import java.io.*;
import java.net.Socket;
import java.nio.charset.Charset;
public class MySocketClient {
private static final String SERVER_HOST = "localhost";
private static final int PORT = 8888;
public void startClient(){
Socket socket = null;
try{
socket = new Socket(SERVER_HOST, PORT);
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
outputStream.write("你好,服务器".getBytes(Charset.forName("UTF-8")));
socket.shutdownOutput();
byte[] bytes = new byte[1024];
int len;
StringBuilder sb = new StringBuilder();
while ((len = inputStream.read(bytes)) != -1){
sb.append(new String(bytes, 0, len, "UTF-8"));
}
System.out.println("Receive message from server: " + sb.toString());
socket.shutdownInput();
}catch (Exception e){
e.printStackTrace();
}finally {
if(null != socket){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
MySocketClient client = new MySocketClient();
client.startClient();
}
}