Tag Archives: Socket

TCP三次握手与四次挥手

说明

  1. TCP在建立连接与断开连接时报文头部的标志位与序号值分别是多少呢?
  2. 利用Java的Socket对象分别实现客户端与服务端,对进通讯过程进行数据报文捕获;
  3. 分别研究两种情况,一种是服务器与客户端都在本机,另一种是分别位于两台机器上;

Java示例代码

Client

// packag[......]

继续阅读

Socket通讯的简单实现与应用(文件上传)

Socket通讯的基本实现

package com.yusian.socket;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketDemo {
    public static void main(String[] args) {
        // 服务端进程
        new Thread(() -> {
            try {
                // 创建一个Socket服务
                ServerSocket ss = new ServerSocket(8080);
                // 获取Socket的字节输入流对象,此时程序会阻塞在这个位置,直到有数据
                InputStream is = ss.accept().getInputStream();
                int data = 0;
                // 将接收到的数据输出到控制台
                while ((data = is.read()) != -1) {
                    System.out.print((char) data);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }).start();

        // 客户端进程
        new Thread(() -> {
            try {
                // 创建一个Socket客户端,连接到指定服务器
                Socket s = new Socket("localhost", 8080);
                // 获取Socket的字节输出流,将数据从这里发出
                OutputStream os = s.getOutputStream();
                os.write("Hello Socket...".getBytes());
                // 注意:要主动结束数据发送,否则对方会一直处于等待状态
                s.shutdownOutput();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }).start();
    }
}

[……]

继续阅读