客户端代码实现
package java01.SignIn;import java.io.*;import java.net.*;//import ch07.section03.*;public class socCli { public static void main(String[] args) throws IOException { // 指定使用本地IP //InetAddress addr =InetAddress.getByName(null); //System.out.println("addr = " + addr); Socket socket = new Socket("192.168.1.122",53187); // 将代码放在Try语句中执行,以确保程序能关闭socket try { //Socket socket = new Socket("192.168.1.167",8086); //System.out.println("socket = " + socket); BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream())); // 定义一个PrintWriter对象写输出流 PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream())), true); //for (int i = 0; i < 10; i++) { out.println("192.168.1.187:8098:19网络工程2班:xxx3246"); String str = in.readLine(); System.out.println("自服务端: " + str); // } out.println("END"); } finally { System.out.println("关闭"); socket.close(); } }}
服务器端代码实现
package java01.SignIn;import java.io.*;import java.net.*;public class SocS { // 为这个Socket选择一个断口8080: public static final int PORT=8098; public static void main(String[] args) throws IOException { ServerSocket s = new ServerSocket(8098); // System.out.println("开始: " + s); try { // 生成一个Socket等待连接请求 Socket socket = s.accept(); try { System.out.println( "接受连接请求: " + socket); BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream())); // 定义一个PrintWriter对象写输出流 PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream())), true); while (true) { String str = in.readLine(); if (str.equals("END")) { break; } System.out.println("自客户端: " + str); out.println(str); } // 关闭socket } finally { System.out.println("关闭..."); socket.close(); } } finally { s.close(); } }}
总结与反思:
- 这次实验只是简单实现,没用用到多线程与阻塞,也没有用到swing实现图形界面,打算以后学了js前端技术后再实现
- 没用线程只能一对一通信