socket类型 | 适用范围 | 说明 |
socket.AF_UNIX | 只能够用于单一的Unix系统进程间通信 | 不能在不同主机之间通信 |
socket.AF_INET | 服务器之间网络通信 | 目前常用的就是这种 |
socket.AF_INET6 | IPv6 | 由于IPv6未推广,也少用 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import
socket #导入socket类
HOST =
''
#定义侦听本地地址口(多个IP地址情况下),这里表示侦听所有,也可以写成
0.0
.
0.0
PORT =
50007
#Server端开放的服务端口
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #选择Socket类型和Socket数据包类型
s.bind((HOST, PORT)) #绑定IP地址和端口
s.listen(
1
) #定义侦听数开始侦听(实际上并没有效果)
conn, addr = s.accept() #定义实例,accept()函数的返回值可以看上面的socket函数说明
print
'Connected by'
, addr
while
1
:
data = conn.recv(
1024
) #接受套接字的数据
if
not data:
break
#如果没有数据接收,则断开连接
print
'revc:'
,data #发送接收到的数据
conn.sendall(data) #发送接收到的数据
conn.close() #关闭套接字
|
1
2
3
4
5
6
7
8
9
10
11
|
import
socket
HOST =
'192.168.1.13'
#定义目标主机名
PORT =
50007
#定义目标主机开放服务端口号
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #选择Socket类型和Socket数据包类型
s.connect((HOST, PORT)) #连接到目标主机的socket(套接字)中
s.sendall(
'Hello, world!'
) #发送数据
data = s.recv(
1024
) #接收数据
s.close() #关闭socket
print
'Received'
, repr(data)
|
1
2
|
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day5$ python server4.py
===>光标在此处处于等待状态
|
1
2
|
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day5$ python client4.py
Received 'Hello, world! ===>收到服务端返回的数据
|
1
2
3
|
xpleaf@xpleaf-machine:/mnt/hgfs/Python/day5$ python server4.py
Connected by (
'192.168.1.13'
,
52641
) ===>有客户端连接进来,
52641
为Client的随机端口号
revc: Hello, world! ===>收到来自Client端的数据
|