C++与python socket编程通信

 

 

socket编程python2 和python3有区别,

连接不上的原因 :

1,试试ping 命令,基本上就是ping不通,有时候A电脑能ping通B,相反B电脑不能ping通A,原因就是防火墙拦截了,windows的防火墙很烦人的。

python3和作为服务器端

此代码直接复制过去就好

import socket
import os
import time

if __name__ == '__main__':
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind(("127.0.0.1", 9555))
    server.listen(0)
    while True:
        connection, address = server.accept()
        print(connection, address)
        recv_str=connection.recv(1024)[0:5]
        #recv_str=str(recv_str)  这样不行带有了b''
        recv_str=recv_str.decode("ascii")
        print( recv_str,len(recv_str) )
        connection.send( bytes("test: %s" % recv_str,encoding="ascii") )
        time.sleep( 0.5 )
    connection.close()
    input()

python2

from socket import *
PORT=9555
HOST='127.0.0.1'
clientsocket = socket(AF_INET,SOCK_STREAM)
clientsocket.connect((HOST,PORT))
clientsocket.send(b'hello') #这里要发生字节流形式,记住这个形式就可以了
data = clientsocket.recv(1024)
print data

客户端C++:

此代码需要准备好阿发你好的库文件,运行在vs2008上,代码直接复制过去就好

#define _CRT_SECURE_NO_WARNINGS /* VS2013,2015需要这一行 */
#include <stdio.h>
#include <string.h>

#include "osapi/osapi.h"

int main()
{
	// 打开Socket
	OS_TcpSocket client_sock;
	client_sock.Open();

	// 连接服务器
	OS_SockAddr serv_addr("127.0.0.1", 9555);
	if(	client_sock.Connect( serv_addr ) < 0)
	{
		printf("无法连接服务器!\n");
		return -1;
	}

	char buf[1024];

	// 发送请求
	strcpy(buf, "help me");
	int n = strlen(buf);
	client_sock.Send(buf, n);

	// 接受应答
	n = client_sock.Recv(buf, sizeof(buf));
	buf[n] = 0;
	printf("Got: %s \n", buf);

	// 关闭Socket
	client_sock.Close();
	return 0;
}

 

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值