【计算机网络】TCP socket编程

简介: 【计算机网络】TCP socket编程



 

一、前言

Socket(套接字)是计算机网络中用于实现进程之间通信的一种机制。它提供了一种统一的编程接口,允许不同的计算机之间通过网络传输数据。套接字是网络编程的基础,它被广泛用于实现各种网络应用,包括Web浏览器、邮件客户端、文件传输等。

二、概念

1、通信模型:

Socket使用客户端-服务器(Client-Server)模型,其中一个进程充当服务器,等待接受客户端的连接请求,而另一个进程充当客户端,通过网络连接到服务器。

2、端口:

在Socket通信中,端口是一个数字,用于标识一个特定的进程。端口的范围是0到65535,其中0到1023是保留端口,一般用于系统服务,而1024到65535是可用于自定义应用的端口范围。

3、IP地址:

IP地址用于标识网络中的设备,分为IPv4和IPv6。IPv4地址通常以点分十进制表示,例如,127.0.0.1是本地主机地址。IPv6则使用冒号分隔的16进制表示。

4、协议:

常见的套接字通信协议有TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)。TCP提供可靠的、面向连接的通信,而UDP是无连接的、不可靠的通信,适用于一些实时性要求较高的应用。

在Socket编程中,通常有两种类型的套接字:服务器套接字和客户端套接字。服务器套接字用于监听连接请求,而客户端套接字用于发起连接请求。通过套接字,进程可以在网络上发送和接收数据,实现进程之间的通信。套接字编程通常涉及套接字的创建、绑定、监听(服务器端)、连接(客户端)、发送和接收数据等操作。

三、简单搭建

在Java中实现TCP Socket编程也是相对简单的,以下是一个简单的例子,包括服务器端和客户端的代码:

1、服务器代码

import java.io.*;
import java.net.*;
public class TCPServer {
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        try {
            // 创建服务器套接字,绑定端口
            serverSocket = new ServerSocket(8888);
            System.out.println("服务器已启动,等待客户端连接...");
            // 等待客户端连接
            Socket clientSocket = serverSocket.accept();
            System.out.println("客户端已连接,地址:" + clientSocket.getInetAddress());
            // 获取输入流和输出流
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
            // 接收客户端数据
            String receivedMessage = in.readLine();
            System.out.println("收到客户端数据: " + receivedMessage);
            // 发送数据给客户端
            out.println("Hello, client!");
            // 关闭连接
            in.close();
            out.close();
            clientSocket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

2、客户端代码

import java.io.*;
import java.net.*;
public class TCPClient {
    public static void main(String[] args) {
        Socket socket = null;
        try {
            // 创建客户端套接字,连接服务器
            socket = new Socket("localhost", 8888);
            System.out.println("连接服务器成功.");
            // 获取输入流和输出流
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            // 发送数据给服务器
            out.println("Hello, server!");
            // 接收服务器数据
            String receivedMessage = in.readLine();
            System.out.println("收到服务器数据: " + receivedMessage);
            // 关闭连接
            in.close();
            out.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上代码简单地创建了一个TCP服务器端和客户端,服务器端在端口8888上监听客户端的连接请求,接收数据后发送一条欢迎消息。客户端连接到服务器,发送一条消息,然后接收服务器的响应。在实际应用中,你可能需要更多的错误处理和线程管理。


相关文章
|
18天前
|
开发者 Python
Python Socket编程:不只是基础,更有进阶秘籍,让你的网络应用飞起来!
在数字时代,网络应用成为连接世界的桥梁。Python凭借简洁的语法和丰富的库支持,成为开发高效网络应用的首选。本文通过实时聊天室案例,介绍Python Socket编程的基础与进阶技巧。基础篇涵盖服务器和客户端的建立与数据交换;进阶篇则探讨多线程与异步IO优化方案,助力提升应用性能。通过本案例,你将掌握Socket编程的核心技能,推动网络应用飞得更高、更远。
32 1
|
2天前
|
域名解析 存储 网络协议
TCP套接字【网络】
TCP套接字【网络】
18 10
|
1天前
|
网络协议 Linux 网络性能优化
Linux基础-socket详解、TCP/UDP
综上所述,Linux下的Socket编程是网络通信的重要组成部分,通过灵活运用TCP和UDP协议,开发者能够构建出满足不同需求的网络应用程序。掌握这些基础知识,是进行更复杂网络编程任务的基石。
8 1
|
14天前
|
网络协议 Python
网络世界的建筑师:Python Socket编程基础与进阶,构建你的网络帝国!
在数字宇宙中,网络如同复杂脉络连接每个角落,Python Socket编程则是开启这一世界的钥匙。本文将引导你从基础概念入手,逐步掌握Socket编程,并通过实战示例构建TCP/UDP服务器与客户端。你将学会使用Python的socket模块进行网络通信,了解TCP与UDP的区别,并运用多线程与异步IO提升服务器性能。跟随本文指引,成为网络世界的建筑师,构建自己的网络帝国。
26 2
|
15天前
|
网络协议 Python
告别网络编程迷雾!Python Socket编程基础与实战,让你秒变网络达人!
在网络编程的世界里,Socket编程是连接数据与服务的关键桥梁。对于初学者,这往往是最棘手的部分。本文将用Python带你轻松入门Socket编程,从创建TCP服务器与客户端的基础搭建,到处理并发连接的实战技巧,逐步揭开网络编程的神秘面纱。通过具体的代码示例,我们将掌握Socket的基本概念与操作,让你成为网络编程的高手。无论是简单的数据传输还是复杂的并发处理,Python都能助你一臂之力。希望这篇文章成为你网络编程旅程的良好开端。
37 3
|
14天前
|
网络协议 开发者 Python
网络编程小白秒变大咖!Python Socket基础与进阶教程,轻松上手无压力!
在网络技术飞速发展的今天,掌握网络编程已成为开发者的重要技能。本文以Python为工具,带你从Socket编程基础逐步深入至进阶领域。首先介绍Socket的概念及TCP/UDP协议,接着演示如何用Python创建、绑定、监听Socket,实现数据收发;最后通过构建简单的聊天服务器,巩固所学知识。让初学者也能迅速上手,成为网络编程高手。
49 1
|
24天前
|
网络协议 安全 网络安全
震惊!Python Socket竟能如此玩转网络通信,基础到进阶全攻略!
【9月更文挑战第12天】在网络通信中,Socket编程是连接不同应用与服务的基石。本文通过问答形式,从基础到进阶全面解析Python Socket编程。涵盖Socket的重要性、创建TCP服务器与客户端、处理并发连接及进阶话题如非阻塞Socket、IO多路复用等,帮助读者深入了解并掌握网络通信的核心技术。
43 6
|
22天前
|
网络协议 Linux 应用服务中间件
Socket通信之网络协议基本原理
【9月更文挑战第14天】网络协议是机器间交流的约定格式,确保信息准确传达。主要模型有OSI七层与TCP/IP模型,通过分层简化复杂网络环境。IP地址全局定位设备,MAC地址则在本地网络中定位。网络分层后,数据包层层封装,经由不同层次协议处理,最终通过Socket系统调用在应用层解析和响应。
|
23天前
|
消息中间件 网络协议 网络安全
解锁Python Socket新姿势,进阶篇带你玩转高级网络通信技巧!
【9月更文挑战第13天】在掌握了Python Socket编程基础后,你是否想进一步提升技能?本指南将深入探讨Socket编程精髓,包括从阻塞到非阻塞I/O以提高并发性能,使用`select`进行非阻塞操作示例;通过SSL/TLS加密通信保障数据安全,附带创建SSL服务器的代码实例;以及介绍高级网络协议与框架,如HTTP、WebSocket和ZeroMQ,帮助你简化复杂应用开发。通过学习这些高级技巧,你将在网络编程领域更进一步。
29 2
|
1月前
|
网络协议 C语言
C语言 网络编程(十三)并发的TCP服务端-以进程完成功能
这段代码实现了一个基于TCP协议的多进程并发服务端和客户端程序。服务端通过创建子进程来处理多个客户端连接,解决了粘包问题,并支持不定长数据传输。客户端则循环发送数据并接收服务端回传的信息,同样处理了粘包问题。程序通过自定义的数据长度前缀确保了数据的完整性和准确性。

热门文章

最新文章

下一篇
无影云桌面