Python网络编程

在Python中,使用socket模块可以创建和操作套接字,实现网络通信。以下是socket的基本使用方法:

1. 创建套接字

使用socket.socket()函数创建一个套接字对象。参数family表示套接字的地址族,可以是AF_INET(IPv4)或AF_INET6(IPv6);参数type表示套接字的类型,可以是SOCK_STREAM(TCP协议)或SOCK_DGRAM(UDP协议)。

```

import socket

# 创建TCP套接字

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

# 创建UDP套接字

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

```

2. 绑定地址和端口号

使用bind()方法将套接字绑定到一个本地地址和端口号。对于服务器程序,通常将套接字绑定到0.0.0.0表示监听所有可用的网络接口;对于客户端程序,通常不需要绑定套接字。

```

import socket

# 创建TCP套接字并绑定到本地地址和端口号

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

s.bind(('127.0.0.1', 8888))

# 创建UDP套接字并绑定到本地地址和端口号

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

s.bind(('127.0.0.1', 8888))

```

3. 监听连接请求

使用listen()方法监听TCP连接请求。参数backlog表示最大连接数,通常设置为5或10。

```

import socket

# 创建TCP套接字并绑定到本地地址和端口号,然后开始监听连接请求

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

s.bind(('127.0.0.1', 8888))

s.listen(5)

```

4. 接受连接请求

使用accept()方法接受TCP连接请求,返回一个新的套接字对象和客户端地址信息。对于服务器程序,通常使用一个循环来处理多个客户端连接请求。

```

import socket

# 创建TCP套接字并绑定到本地地址和端口号,然后开始监听连接请求

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

s.bind(('127.0.0.1', 8888))

s.listen(5)

while True:

    # 接受连接请求,返回一个新的套接字对象和客户端地址信息

    conn, addr = s.accept()

    print('Connected by', addr)

    # 处理连接请求

    # ...

    # 关闭套接字

    conn.close()

```

5. 发送和接收数据

使用send()和recv()方法来发送和接收数据。对于TCP连接,可以使用sendall()方法来确保发送完整数据。

```

import socket

# 创建TCP套接字并连接到远程主机

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

s.connect(('127.0.0.1', 8888))

# 发送数据

s.sendall(b'Hello, world!')

# 接收数据

data = s.recv(1024)

print(data)

# 关闭套接字

s.close()

```

6. 关闭套接字

使用close()方法关闭套接字。

```

import socket

# 创建TCP套接字并连接到远程主机

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

s.connect(('127.0.0.1', 8888))

# 发送数据

s.sendall(b'Hello, world!')

# 关闭套接字

s.close()

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值