您所在的位置:首页 - 热点 - 正文热点

socket编程例子

进入
进入 05-04 【热点】 640人已围观

摘要标题:Socket编程实现及示例Socket是一种网络通信机制,它是对TCP/IP协议的封装。使用Socket编程,可以实现不同机器之间的通信,是网络编程中一个重要的组成部分。Python中有sock

Socket编程实现及示例

Socket是一种网络通信机制,它是对TCP/IP协议的封装。使用Socket编程,可以实现不同机器之间的通信,是网络编程中一个重要的组成部分。

Python中有socket模块,提供了基于TCP和UDP的socket编程接口。下面我们来介绍一下如何使用Python实现Socket编程。

1. Socket编程实现

1.1 建立Socket连接

建立Socket连接需要指定协议和地址,代码如下:

```

import socket

创建socket对象

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

获取本地主机名

host = socket.gethostname()

设置端口号

port = 9999

连接服务,指定主机和端口

s.connect((host, port))

```

其中,`socket.AF_INET`表示IPv4协议簇,`socket.SOCK_STREAM`表示TCP传输协议;`socket.gethostname()`获取本地主机名,`port`指定了端口号。

1.2 发送和接收数据

使用Socket编程,可以发送和接收数据。Python提供了`send`和`recv`两个方法完成这个过程,示例代码如下:

客户端实现:

```

import socket

创建socket对象

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

获取本地主机名

host = socket.gethostname()

设置端口号

port = 9999

连接服务,指定主机和端口

s.connect((host, port))

发送消息

s.send("Hello Python!".encode('utf8'))

接收消息并打印

msg = s.recv(1024)

print(msg.decode('utf8'))

关闭socket连接

s.close()

```

上述代码中,`encode`和`decode`方法用于将字符串转换为二进制格式和将二进制格式转换为字符串。

服务端实现:

```

import socket

创建socket对象

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

获取本地主机名

host = socket.gethostname()

设置端口号

port = 9999

绑定端口

s.bind((host, port))

等待客户端连接

s.listen(5)

while True:

建立客户端连接

client_sock, client_addr = s.accept()

print('连接地址:',client_addr)

接收消息并打印

msg = client_sock.recv(1024)

print(msg.decode('utf8'))

返回消息

client_sock.send("Welcome to Python World!".encode('utf8'))

关闭连接

client_sock.close()

```

上述代码中,`s.listen()`方法设置连接队列的最大数量。在服务端使用循环监听连接请求,`s.accept()`方法等待并建立连接,在接收到客户端消息后返回一个欢迎消息。

2. Socket编程示例

下面通过一个简易的聊天室示例,来展示Socket编程的应用。

客户端实现:

```

import socket

import threading

发送消息

def send(socket):

while True:

msg = input("请输入发送内容:")

socket.send(msg.encode('utf8'))

接收消息

def receive(socket):

while True:

msg = socket.recv(1024)

print("接收到消息:", msg.decode('utf8'))

创建socket对象

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

获取本地主机名

host = socket.gethostname()

设置端口号

port = 9999

连接服务,指定主机和端口

s.connect((host, port))

启动发送和接收线程

t1 = threading.Thread(target=send, args=(s,))

t2 = threading.Thread(target=receive, args=(s,))

t1.start()

t2.start()

```

服务端实现:

```

import socket

import threading

发送消息

def send(conn):

while True:

msg = input("请输入发送内容:")

conn.send(msg.encode('utf8'))

接收消息

def receive(conn, addr):

while True:

msg = conn.recv(1024

Tags: 零之轨迹修改器 就这样爱你爱你 天龙八部带头大哥

最近发表

icp沪ICP备2023033053号-25
取消
微信二维码
支付宝二维码

目录[+]