C与Python中的socket
本文主要是想实现一下C与Python的socket通信,顺便说一下两者各自的socket编程。所以全篇结构如下:
- C中的socket
- Python中的socket
- C与Python的socket通信
C 中的socket
这部分主要参考《UNIX环境高级编程(第3版)》
1 | //server.c |
1 | //client.c |
Python 中的socket
1 | #server.py |
1 | #client.py |
C与Python的socket通信
C和Python通过套接字是可以直接通信的。需要注意的是消息的格式。socket传输的内容是byte流,C中可以使用强制类型转换,Python中则需要pack()
与unpack()
。
比如:
在C写的server端发送:
1 | int msg = htonl(999); |
Python端接收:
1 | from struct import * |
unpack()
的第一个参数表示格式,>1I
中的>
表示大端(相应的<
就表示小端),1I
表示一个整数。
pack()
与unpack()
的详细操作见博主 *三月沙** 的《Python 中的 pack 和 unpack》*。
反过来也是一样:
在Python写的server中发送
1 | conn.send(pack('>I',999)) |
C写的client中接收:
1 | int msg; |