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; |