Socket编程基础之服务端与客户端简单通信
服务端代码如下:
/**
*
*/
package com.baoxiu123.net;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @author ping
* @createtime 2015-10-4下午11:49:15
* @function 服务端
*/
public class MySocketServer {
private int serverPort;
private ServerSocket serverSocket;
private Socket socket;
public static void main(String[] args) {
MySocketServer socketServer = new MySocketServer();
socketServer.start();
}
private void start() {
serverPort = 9898;
try {
serverSocket = new ServerSocket(serverPort);
System.out.println("server started...");
while (true) {
socket = serverSocket.accept();
manageConection(socket);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void manageConection(Socket socket) {
new Thread(new Runnable() {
private BufferedReader reader;
private BufferedWriter writer;
@Override
public void run() {
System.out.println("client :" + socket.hashCode() + " connedted" + " remote port:" + socket.getPort());
try {
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String receivedMsg;
while ((receivedMsg = reader.readLine()) != null) {
System.out.println("client " + socket.hashCode() + " :" + receivedMsg);
writer.write("server reply:" + receivedMsg + "\n");
writer.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
客户端代码如下:
/**
*
*/
package com.test.net;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
/**
* @author ping
* @createtime 2015-10-4下午11:49:15
* @function 客户端
*/
public class MySocketClient {
private String serverIp = "127.0.0.1";
private int serverPort = 9898;
private Socket socket;
private BufferedWriter writer;
private BufferedReader inputReader;
private BufferedReader reader;
public static void main(String[] args) {
MySocketClient socketClient = new MySocketClient();
socketClient.start();
}
private void start() {
try {
socket = new Socket(serverIp, serverPort);
System.out
.println("connected at " + serverIp + " server port"
+ socket.getPort() + " local port:"
+ socket.getLocalPort());
reader = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream()));
startServerReplyListener(reader);
inputReader = new BufferedReader(new InputStreamReader(System.in));
String inputString;
while (!(inputString = inputReader.readLine()).equals("bye")) {
writer.write(inputString + "\n");
writer.flush();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
socket.close();
writer.close();
reader.close();
inputReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void startServerReplyListener(final BufferedReader reader) {
new Thread(new Runnable() {
public void run() {
String replyStr;
try {
while ((replyStr = reader.readLine()) != null) {
System.out.println(replyStr);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
自己运行起来,并在客户端发一条消息,截图如下:
先是服务端开启:
其次是客户端截图如下:
还没有评论,来说两句吧...