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