TCPServer和TCPClient(TODO未完成,只有代码)

TCPServer与TCPClient 

首先直接来看代码

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

public class TcpClient {
    private static final String HOST = "localhost";
    private static final int PORT = 9999;

    /**
     * 基本思路:客户端发送数据-》客户端接收数据
     * PrintWriter将对象的格式表示打印到文本输出流
     * @param args
     */
    public static void main(String[] args) {
        try {
            Socket socket = new Socket(HOST, PORT);
            // 客户端发送数据IO输出流
            OutputStream os = socket.getOutputStream();
            //autoFlush:JSP页面是否自动刷新
            PrintWriter pw = new PrintWriter(os,true);
            // 客户端接收数据IO输入流
            InputStream is = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            // 接收控制台输入数据
            Scanner sc = new Scanner(System.in);
            while(sc.hasNext()){
                String line = sc.nextLine();
                pw.println(line);
                String content = br.readLine();
                System.out.println("rev:"+content);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
        }
    }
}
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 知识点:socket与ServerSocket
 * socket可以使一个应用从网络中读取和写入数据,不同计算机上的两个应用可以通过连接发送和接受字节流,当发送消息时,你需要知道对方的ip和端口,在java中,socket指的是java.net.Socket类。
 * 在客户/服务器通信模式中,ServerSocket负责接收客户连接请求,并生成与客户端连接的Socket
 * 基本思路:这里模拟的是同一个IP地址,所以只需要端口号,通过ServerSocket建立起联系,服务端先运行起来,服务端接收数据-》服务端发送数据
 */
public class TcpServer {
    private static final int PORT = 9999;
    public static void main(String[] args) {
        try {
            ServerSocket server = new ServerSocket(PORT);
//            while(true) {
                Socket socket = server.accept();
                // 服务端接收数据IO输入流
                InputStream inputStream = socket.getInputStream();
                InputStreamReader isr = new InputStreamReader(inputStream);
                BufferedReader reader = new BufferedReader(isr);
                // 服务端发送数据IO输出流
                OutputStream os = socket.getOutputStream();
                PrintWriter pw = new PrintWriter(os, true);
                String data = null;
                while ((data = reader.readLine()) != null) {
                    System.out.println(data);
                    pw.println("已经收到数据【"+data+"】");
                }
//            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
        }
    }
}

错误情况


 这里如果直接先运行TCPClient会报错,这里牵扯到了Socket与ServerSocket的知识。 

正常运行结果 


发布了124 篇原创文章 · 获赞 187 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43914278/article/details/104515787
今日推荐