0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

socket 编程基础入门

科技绿洲 来源:网络整理 作者:网络整理 2024-11-12 14:03 次阅读

Socket 编程基础入门

在计算机网络中,Socket 是一个抽象层,它将网络通信的细节隐藏起来,为开发者提供了一个简单的接口来发送和接收数据。Socket 编程是网络编程的基础,它允许程序之间进行通信。本文将带你入门 Socket 编程,帮助你理解基本概念和步骤。

1. Socket 的基本概念

Socket 是一个通信端点,它允许程序发送和接收数据。在 TCP/IP 协议族中,有两种主要类型的 Socket:流式 Socket(Stream Sockets,基于 TCP)和数据报 Socket(Datagram Sockets,基于 UDP)。

  • 流式 Socket(TCP) :提供面向连接、可靠的字节流服务。数据传输是有序的,并且保证数据的完整性。
  • 数据报 Socket(UDP) :提供无连接服务,数据包可能丢失或乱序到达,但不保证数据的完整性。

2. Socket 编程步骤

Socket 编程通常包括以下几个步骤:

  1. 创建 Socket :在客户端和服务器端都需要创建一个 Socket 对象。
  2. 绑定地址 :服务器端需要将 Socket 绑定到一个 IP 地址和端口号上。
  3. 监听连接 :服务器端需要监听客户端的连接请求。
  4. 接受连接 :服务器端接受客户端的连接请求,建立连接。
  5. 数据传输 :客户端和服务器端可以开始发送和接收数据。
  6. 关闭连接 :数据传输完成后,需要关闭 Socket 连接。

3. TCP Socket 编程示例

下面是一个简单的 TCP Socket 编程示例,包括客户端和服务器端代码。

服务器端代码(Python):
import socket

# 创建 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 获取本地主机名
host = socket.gethostname()
port = 9999

# 绑定端口号
server_socket.bind((host, port))

# 设置最大连接数,超过后排队
server_socket.listen(5)

while True:
# 建立客户端连接
client_socket, addr = server_socket.accept()

print(f"连接地址: {str(addr)}")

while True:
# 接收小于 1024 字节的数据
data = client_socket.recv(1024)
if not data:
# 如果没有数据,跳出循环
break
# 发送数据
client_socket.send(data)

# 关闭连接
client_socket.close()
客户端代码(Python):
import socket

# 创建 socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 获取本地主机名
host = socket.gethostname()
port = 9999

# 连接服务,指定主机和端口
client_socket.connect((host, port))

try:
# 发送数据
message = 'This is the message.'
client_socket.send(message.encode('utf-8'))

# 接收小于 1024 字节的数据
data = client_socket.recv(1024)
print(f"Received: {data.decode('utf-8')}")

finally:
# 关闭连接
client_socket.close()

4. UDP Socket 编程示例

UDP Socket 编程与 TCP 类似,但不需要建立连接。

服务器端代码(Python):
import socket

# 创建 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 获取本地主机名
host = socket.gethostname()
port = 9998

# 绑定端口号
server_socket.bind((host, port))

while True:
# 接收数据和客户端地址
data, addr = server_socket.recvfrom(1024)
print(f"Received message: {data} from {addr}")

# 发送数据
server_socket.sendto(data, addr)
客户端代码(Python):
import socket

# 创建 socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 获取本地主机名
host = socket.gethostname()
port = 9998

# 发送数据
message = 'This is a UDP message.'
client_socket.sendto(message.encode('utf-8'), (host, port))

# 接收数据
data, server = client_socket.recvfrom(1024)
print(f"Received: {data.decode('utf-8')} from {server}")

# 关闭连接
client_socket.close()

5. 总结

Socket 编程是网络编程的基础,通过本文的介绍,你应该对 Socket 的基本概念和编程步骤有了初步的了解。无论是 TCP 还是 UDP,Socket 都提供了一个简单的接口来实现网络通信。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8465

    浏览量

    150751
  • Socket
    +关注

    关注

    0

    文章

    210

    浏览量

    34621
  • 编程
    +关注

    关注

    88

    文章

    3574

    浏览量

    93545
  • 网络通信
    +关注

    关注

    4

    文章

    783

    浏览量

    29744
收藏 人收藏

    评论

    相关推荐

    Linux+Socket编程

    本内容详细讲述了Linux+Socket编程技巧指南,适合所有学习编程的广大用户使用
    发表于 06-10 11:19 0次下载
    Linux+<b class='flag-5'>Socket</b><b class='flag-5'>编程</b>

    C语言SOCKET编程指南

    这个文档是一个指南,而不是参考书。如果你刚开始socket 编程并想找一本入门书,那么你是我的读者。但这不是一本完全的socket 编程书。
    发表于 12-09 14:58 0次下载

    SOCKEt编程介绍

    这个文档是一个指南,而不是参考书。如果你刚开始 socket 编程并想找一本入门书,那么你是我的读者。但这不是一本完全的 socket 编程
    发表于 03-02 15:36 4次下载

    linux-网络编程-socket编程

    linux开发编程教程资料——linux-网络编程-socket编程,感兴趣的小伙伴们可以看一看。
    发表于 08-23 16:23 0次下载

    Socket网络编程

    计算机学习相关知识学习教程之Socket网络编程
    发表于 09-01 15:01 0次下载

    TCP-IP_Socket网络编程

    网络编程的基础知识--TCP-IP_Socket网络编程
    发表于 09-01 15:01 0次下载

    Windows-Socket-API编程

    Windows-Socket-API编程教程,感兴趣的可以看看。
    发表于 09-01 15:27 0次下载

    socket是什么意思_socket编程是什么意思_socket详解

    编程语言的角度,socket是一个无符号整型变量,用来标识一个通信进程。两个进程通信,总要知道这几个信息:双方的ip地址和端口号,通信所采用的协议栈。socket就是和这些东西绑定的,实现s
    发表于 12-28 17:21 2.4w次阅读

    基于Socket的java通信编程详解

    Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket
    发表于 12-28 17:37 2819次阅读
    基于<b class='flag-5'>Socket</b>的java通信<b class='flag-5'>编程</b>详解

    SOCKET入门最简单的程序免费下载

    本文档的主要内容详细介绍的是SOCKET入门最简单的程序免费下载。
    发表于 07-17 17:39 0次下载
    <b class='flag-5'>SOCKET</b><b class='flag-5'>入门</b>最简单的程序免费下载

    Socket 网络编程框架介绍

    Socket 网络编程框架 Socket(套接字)是一个网络编程概念,描述了一个通信端点(Endpoint),用于建立网络连接(Connection)并传输数据。 Linux Kern
    的头像 发表于 11-09 14:19 999次阅读
    <b class='flag-5'>Socket</b> 网络<b class='flag-5'>编程</b>框架介绍

    如何理解socket编程接口

    Socket编程接口是一种网络编程的基本概念,它提供了一种在不同计算机之间进行通信的方法。 Socket编程接口的基本概念 1.1
    的头像 发表于 08-16 10:48 324次阅读

    什么是socket编程 socket与tcp/ip协议的关系

    什么是Socket编程 Socket编程是一种网络编程技术,它允许程序之间进行通信。在计算机科学中,so
    的头像 发表于 11-01 16:01 116次阅读

    socket编程中的阻塞与非阻塞

    在网络编程中, socket 是一个非常重要的概念,它提供了一个抽象层,使得开发者可以不必关心底层的网络通信细节。 socket 编程中的阻塞与非阻塞模式是两种不同的操作方式,它们对程
    的头像 发表于 11-01 16:13 113次阅读

    C语言中的socket编程基础

    Socket编程简介 Socket是一种通信机制,允许程序之间进行通信。在C语言中,socket编程是网络
    的头像 发表于 11-01 16:51 218次阅读