Python两台电脑实现TCP通信

为了实现Nao机器人与电脑端的TCP通信,于是研究了一下Python实现TCP通信,在网上也看到了很多例子,但大多都是在一台机器上验证。在两台机器上使用,出了一些小故障。

注意:若两台电脑通信出了问题,若能ping通!大部分是防火墙的问题。一开始A做服务器,B做客户端能实现;B做服务器,A做客户端,A就不能连接到B。我换了一台电脑A就能实现通信了。应该是A的防火墙需要设置。但是A的防火墙全关了也不能实现。真是很让人搞不懂。

首先是服务器端代码:

# -*- encoding: utf-8 -*-
import socket

IP = "192.168.1.153" #服务器端可以写"localhost",可以为空字符串"",可以为本机IP地址
port = 40005 #端口号
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((IP,port))
s.listen(1)
print('listen at port :',port)
conn,addr = s.accept()
print('connected by',addr)

while True:
    data = conn.recv(1024)
    data = data.decode()#解码
    if not data:
        break
    print('recieved message:',data)
    send = raw_input('return:')#python27要写raw_input,python3.X可写input
    conn.sendall(send.encode())#再编码发送


conn.close()
s.close()


客户端代码:

# -*- encoding: utf-8 -*-
import socket
import sys
IP = '192.168.1.153' #填写服务器端的IP地址
port = 40005 #端口号必须一致
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    s.connect((IP,port))
except Exception as e:
    print('server not find or not open')
    sys.exit()
while True:
    trigger = raw_input("send:")
    s.sendall(trigger.encode())
    data = s.recv(1024)
    data = data.decode()
    print('recieved:',data)
    if trigger.lower() == '1':#发送1结束连接
        break
s.close()


  • 13
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
实现两台电脑之间的信息收发,可以使用Python中的socket库。下面是具体的步骤: 1. 创建服务器端 在一台电脑上创建服务器程序,等待另一台电脑的连接请求。可以使用socket库中的socket函数创建一个TCP套接字,并绑定到本地IP地址和端口号。然后使用listen函数开始监听客户端连接请求。当客户端请求连接时,使用accept函数接受连接请求,并返回一个新的套接字,用于和客户端进行通信。 2. 创建客户端 在另一台电脑上创建客户端程序,连接到服务器程序。同样使用socket函数创建一个TCP套接字,并使用connect函数连接服务器的IP地址和端口号。 3. 发送和接收消息 一旦客户端和服务器端建立了连接,就可以开始发送和接收消息了。可以使用send和recv函数来发送和接收数据。在发送数据时,需要将数据转换成二进制格式。在接收数据时,需要指定接收的数据大小,并用decode函数将二进制数据转换成字符串格式。 4. 关闭连接 通信结束后,需要使用close函数关闭套接字,并释放资源。 下面是一个简单的示例代码,实现两台电脑之间的信息收发: 服务器端代码: ``` import socket # 创建TCP套接字 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定IP地址和端口号 server_socket.bind(('localhost', 8000)) # 开始监听连接请求 server_socket.listen(1) print('Waiting for connection...') # 接受连接请求 client_socket, addr = server_socket.accept() print('Connected by', addr) # 发送消息 msg = 'Hello from server!' client_socket.send(msg.encode()) # 接收消息 data = client_socket.recv(1024) print('Received from client:', data.decode()) # 关闭连接 client_socket.close() server_socket.close() ``` 客户端代码: ``` import socket # 创建TCP套接字 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 server_addr = ('localhost', 8000) client_socket.connect(server_addr) # 接收消息 data = client_socket.recv(1024) print('Received from server:', data.decode()) # 发送消息 msg = 'Hello from client!' client_socket.send(msg.encode()) # 关闭连接 client_socket.close() ``` 在代码中,服务器端绑定到本地IP地址和8000端口,等待客户端连接。客户端连接到服务器端的IP地址和8000端口,连接成功后发送和接收消息。运行服务器端程序后,等待连接请求。在另一台电脑上运行客户端程序,连接到服务器端并发送和接收消息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值