创建服务器
1.在指定的端口上创建服务器套接字
2.通过accept()方法监听客户端的连接
3.启动一个线程,进行I/O操作
package org.mobiletrain;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
class clientHandler implements Runnable{
private Socket client;
public clientHandler(Socket client) {
this.client = client;
}
@Override
public void run() {
try {
InputStream in = client.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8"));
OutputStream out = client.getOutputStream();
PrintStream ps = new PrintStream(out);
String tempstr;
while((tempstr = br.readLine()) != null){
if (tempstr.equals("bye")) {
client.close();
break;
}
ps.println(tempstr.toUpperCase());
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}
public class Test02 {
//查看当前网络连接 netstat -na
public static void main(String[] args) {
ExecutorService service = Executors.newCachedThreadPool();
//括号内参数是端口,一般写1024以上的端口号
try (ServerSocket server = new ServerSocket(1234)){
System.out.println("server isRunning...");
while(true){
try {
//该方法是一个阻塞方法,如果没有客户端连上服务器,就一直保持阻塞
Socket client = server.accept();
service.execute(new clientHandler(client));
}
catch (IOException e) {
}
service.shutdown();
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}
创建客户端连接服务器
public class Test03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try (Socket socket = new Socket("10.7.155.73", 1234)){
InputStream in = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
OutputStream out = socket.getOutputStream();
PrintStream ps = new PrintStream(out);
String tempstr = scanner.nextLine();
while (!tempstr.equals("bye")) {
ps.println(tempstr);
System.out.println(br.readLine());
tempstr = scanner.nextLine();
}
}
catch (Exception e) {
e.printStackTrace();
}
scanner.close();
}
}
网友评论