python socket通信_【整理】Python Socket Server with C++ Socket Client通信 | 勤奋的小青蛙...

Python与C++通信,早前博客(【

方法大同小异,在此提供示例代码以及

Python服务端:

python_server.py:

# -*- coding: utf-8 -*-

import socket

#创建一个socket对象

sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0)

#sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 0)

#sock.setblocking(1)

ip_port = ('127.0.0.1',9998)

#绑定ip和端口号

sock.bind(ip_port)

#sock.setblocking(1)

#设置最大连接数

sock.listen(5)

while True:

#使用accept方法获取一个客户端连接

#获取客户端的scoket对象conn和客户端的地址(ip、端口号)address

conn,address = sock.accept()

# 给客户端发信息

send_data = 'Hello.'

conn.sendall(send_data)

while True:

try:

# 接收客户端消息

recv_data = conn.recv(1024)

#print 'Client:', recv_data, ", Type:", type(recv_data), ", Equal:", (recv_data.replace("0x00", "") == 'start')

#print 'Client:', recv_data[0:5], ", Type:", type(recv_data[0:5])

# 如果收到start就开始调用统计代码

if recv_data[0:5] == 'start':

print 'Ok, Starting...'

# 开始调用统计代码输出结果到变量 result

pass

#检测客户端发出退出指令,关闭连接

if recv_data[0:4] == 'exit':

break

#s = input('Server:').strip()

#if len(s) == 0:

#break

#conn.send(bytes(s,encoding='utf-8'))

except Exception as e:

break

# 关闭客户端的socket连接

conn.close()

运行指令:

python python_server.py

C语言客户端代码:

socket_client.c

#include

#include

#include

#include

#include

#include

#include

#include

int main() {

/*步骤1:创建socket*/

int sockfd = socket(AF_INET, SOCK_STREAM, 0);

if (sockfd < 0) {

perror("socket error");

exit(1);

}

struct sockaddr_in serveraddr;

memset(&serveraddr, 0, sizeof(serveraddr));

serveraddr.sin_family = AF_INET;

serveraddr.sin_port = htons(atoi("9998"));

inet_pton(AF_INET, "127.0.0.1", &serveraddr.sin_addr.s_addr);

/*步骤2:客户端调用connect函数连接到服务器*/

if (connect(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0) {

perror("connect error");

exit(1);

}

/*步骤3:调用IO函数(read/write)进行服务端的双向通信*/

char buffer[1024];

memset(buffer, 0, sizeof(buffer));

strcpy(buffer, "start");

size_t size;

/*if ((size = read(sockfd, buffer, sizeof(buffer))) < 0) {

perror("read error");

}*/

printf("buffer is %s, sizeof(buffer) is %d\n", buffer, sizeof(buffer));

if (write(sockfd, buffer, sizeof(buffer)) < 0) {

perror("write error");

}

/*步骤4:关闭socket*/

close(sockfd);

return 0;

}

编译指令:

gcc socket_client.c -o socket_client

运行指令:

./socket_client

演示效果:

python_server_cpp_client.gif

文章的脚注信息由WordPress的wp-posturl插件自动生成

|2|left

打赏

TIM截图20170723221205.png

ico-wechat.jpg微信扫一扫,打赏作者吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值