TCP(socket 套接字)编程 1

一、TCP套接字编程架构如下

二、相关代码实现

1、服务器端代码

java 复制代码
package com.company;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class Main {

    public static void main(String[] args) {
// write your code here

        try {
            //创建服务,并监听特定的端口,设置TCP链接队列长度
            //backlog可以设置队列的长度,成功创建链接的会被存储到此全连接队列中,等待线程调用accept方法将其从中一个一个移出
            ServerSocket serverSocket = new ServerSocket(8081,3);
            System.out.println("服务开始进行监听,监听端口为8081");
            int i=1;
            while(true){
                //从全连接队列中移出一个连接
                Socket socket = serverSocket.accept();
                byte[] byet1=new byte[20];
                try {
                    socket.getInputStream().read(byet1);
                    String str =new String(byet1);
                    System.out.println(str);
                    InetSocketAddress  socketAddress=(InetSocketAddress)socket.getRemoteSocketAddress();
                    System.out.println(socketAddress.getHostName()+"   "+socketAddress.getPort());
                    //socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

                try {
                    Thread.sleep(50000);
                    socket.close();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

        } catch (IOException e) {
            e.printStackTrace();

        }
    }
}
  • 1、创建服务,并监听特定的端口,设置TCP链接队列长度;
  • 2、backlog可以设置队列的长度,成功创建链接的会被存储到此全连接队列中,等待线程调用accept方法将其从中一个一个移出;

2、客户端代码

java 复制代码
package com.company;

import java.io.IOException;
import java.net.Socket;
import java.nio.charset.StandardCharsets;

public class Main {
    public static void main(String[] args) {
        // write your code here
        byte [] byte2= new byte[20];
        int i=1;
        String string="hello world";
        for(;i<3;i++){
        try {
            String str=string+i;
            byte2= string.getBytes(StandardCharsets.UTF_8);
            Socket socket =new Socket("127.0.0.1",8081);
            System.out.println(socket.getLocalAddress().getHostAddress()+"   "+socket.getLocalPort());
            socket.setKeepAlive(true);
            System.out.println(str);
            socket.getOutputStream().write(byte2);
            Thread.sleep(10000);
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
        }
    }
}
相关推荐
下一秒_待续2 天前
C# 使用Socket通信,新建WinForm服务端、客户端程序
websocket·c#·socket·winforms
闲人编程2 天前
Python实现Socket.IO的完整指南
开发语言·python·网络编程·io·socket·异步
闲人编程3 天前
Python实现 Socket.IO 的在线游戏场景
开发语言·python·游戏·网络编程·io·socket·异步
邂逅岁月3 天前
【网络原理】❤️Tcp 连接管理机制❤️ “三次握手” “四次挥手”的深度理解, 面试最热门的话题,没有之一, 保姆式教学 !!!
网络·tcp/ip·计算机网络·面试·tcp·网络连接·tcp机制
怀九日8 天前
网络高级(学习)2024.9.11
网络·网络协议·学习·tcp/ip·tcp·modbus·rtu
一直在找资料的菜鸟9 天前
QT QTcpSocket作为客户端
开发语言·c++·qt·socket
轩轶子9 天前
【C-实践】文件服务器(1.0)
服务器·c语言·小程序·tcp
不想秃头的烟花13 天前
传输层(TCP、UDP、RDT详解)
udp·tcp·连接管理·流量控制·传输层·rdt·可靠数据传输
yunteng52114 天前
区块链-P2P(八)
网络协议·区块链·tcp·p2p
帅得不敢出门14 天前
记录ssl epoll的tcp socket服务端在客户端断开时崩溃的问题
linux·网络·tcp/ip·socket·ssl·epoll·c/c++