赞
踩
1、创建服务端端套接字对象
2、绑定IP地址和端口号
3、设置监听
4、等待接收客户端的连接请求
5、接收数据
6、发送数据
7、关闭套接字
bind:绑定IP地址和端口号,放在元组里面,第一个参数是IP,第二个参数是端口
listen:设置监听,设置最大的等待连接数
accept:等待接收客户端的连接请求
send:发送数据,发送的是二进制数据,如果是字符串 则需要使用encode()方法进行编码
recv:接收数据,每次接收数据的大小,单位是字节,解码成字符串使用decode()方法close:关闭连接
- import socket
-
- if __name__ == '__main__':
-
- # 创建服务端端套接字对象
- server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-
- # 绑定IP地址和端口号
- # 也是放入元组之中,第一个参数是IP地址,不写就是默认本机的IP地址,第二个是端口号
- server.bind(('', 8081))
-
- # 设置监听
- # 128代表服务端等待排队连接的最大数量
- server.listen(128)
-
- # 等待接收客户端的连接请求
- # 左边第一个是专门用来服务你当前连接的套接字对象,给他分配一个套接字,第二个是当前哪一个人或者说哪一个IP地址和端口号连接到我
- coon, ip_port = server.accept()
- print('我是:', ip_port)
-
- # 接收数据
- recv_date = coon.recv(1024)
- print(recv_date.decode(encoding='gbk'))
-
- # 发送数据
- coon.send('你好,我是服务端'.encode(encoding='gbk'))
-
- # 关闭套接字
- coon.close()
- server.close()

注意:服务端先运行,客户端后运行
注意:服务器和客户端的发送接收的函数指定的编码一定是需要一样的,否则会报错或者乱码
执行结果
windows使用的是gkb编码,linux使用的是utf-8编码
windows的端口用完就会释放,可以一直使用
linux的端口用完会冷却一点时间,不能一直跑,会报出端口被占用,所以可以写端口复用
- import socket
-
- if __name__ == '__main__':
- server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-
- # 设置端口复用
- server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
-
- server.bind(('', 8081))
- server.listen(128)
-
- coon, ip_port = server.accept()
- print('我是:', ip_port)
-
- recv_date = coon.recv(1024)
- print(recv_date.decode(encoding='utf-8'))
-
- coon.send('你好,我是服务端'.encode(encoding='utf-8'))
-
- coon.close()
- server.close()

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。