Python两台电脑实现TCP通信的方法示例

yipeiwu_com5年前Python基础

为了实现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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python3 assert 断言的使用详解 (区别于python2)

python3 和python以前的版本有点不同 如果你断言的 语句正确 则什么反应都没有 但是如果你出错之后 就会报出 AssertionError 并且错误可以自己填写 格式 :...

Django使用AJAX调用自己写的API接口的方法

Django使用AJAX调用自己写的API接口的方法

在这个例子中,我们将使用Django编写饿了么高校外卖商家查询API接口,并且使用AJAX技术来实现API接口的使用,包括使用ajax get方法加载更多数据,使用ajax方法来更新、修...

Python基于ThreadingTCPServer创建多线程代理的方法示例

本文实例讲述了Python基于ThreadingTCPServer创建多线程代理的方法。分享给大家供大家参考,具体如下: #coding=utf8 from BaseHTTPServ...

在 Jupyter 中重新导入特定的 Python 文件(场景分析)

在 Jupyter 中重新导入特定的 Python 文件(场景分析)

Jupyter 是数据分析领域非常有名的开发环境,使用 Jupyter 写数据分析相关的代码会大大节约开发时间。 设想这样一个场景:别的部门的同事传给你一个数据分析的模块,用于实现对数据...

TensorFlow tf.nn.conv2d实现卷积的方式

实验环境:tensorflow版本1.2.0,python2.7 介绍 惯例先展示函数: tf.nn.conv2d(input, filter, strides, padding, us...