一. 创建通信服务端
- 1.创建指定端口的通信socket对象 , 即 ServerSocket, 服务器就用这个端口监听从客户端发来的连接请求。
- 2.调用ServerSocket的accept()方法 ,在等待连接期间造成阻塞,监听连接从端口上发来的连接请求
- 3.利用accept()方法返回的客户端socket对象, 进行读写IO操作
- 4.关闭资源
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* server
*
* @author xupengwei
* @create 2017-07-05 下午2:29
**/
public class Server {
static Socket client;
public static void main(String[] args) throws Exception {
int port = 8080;
ServerSocket serverSocket = new ServerSocket(port);
client = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream());
StringBuffer sb = new StringBuffer();
while (true) {
String str = in.readLine();
out.println("has receive");
out.flush();
sb.append(str + "\n");
if (str.equals("end")) {
break;
}
}
System.out.println(sb.toString());
client.close();
}
}
二. 创建通信客户端
- 1.以服务器的IP和端口实例化socket对象
- 2.获取socket上的流, 把流封装进BufferedReader/PrintWriter的实例,以进行读写
- 3.关闭资源
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
/**
* client
*
* @author xupengwei
* @create 2017-07-05 下午2:37
**/
public class Client {
static Socket server;
public static void main(String[] args) throws Exception {
InetAddress localHost = InetAddress.getLocalHost();
int port = 8080;
server = new Socket(localHost, port);
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(server.getOutputStream());
while (true) {
String str = in.readLine();
out.println(str);
out.flush();
if (str.equals("end")) {
break;
}
}
in.close();
out.close();
server.close();
}
}