Python—socket中的tcp

  • 2019 年 10 月 8 日
  • 筆記

在python中的网络编程,即socket编程

tcp:

import socket  print('服务器运行了。。。。')  myfuwu = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  myfuwu.bind(('127.0.0.1', 8000))  while 1:      myfuwu.listen(5)     #监听的客户端的数量,可自己定义数量      conn,addr = myfuwu.accept()  #侦听并接收此套接字的链接      print(conn)      print(addr)      data = conn.recv(1024)   #接收的内容的大小      print('客户端发来:',data.decode('utf-8'))  conn.close()  myfuwu.close

接收到的客户端的结果:

服务器运行了。。。。 <socket.socket fd=504, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0,

laddr=('127.0.0.1', 8000), raddr=('127.0.0.1', 60530)> #conn的内容 ('127.0.0.1', 60530) #addr,套接字的地址 客户端发来: 123

myfuwu = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  myfuwu.bind(('127.0.0.1', 8000))

如果想要不同电脑的通信,在这里把ip修改成电脑的IP地址即可,客户端也是修改成服务端的ip,

第一段的socket.AF_INET是固定格式,而第二个则是tcp的,要是udp则修改成

SOCK_DGRAM

客户端:

import socket    ipport = ('127.0.0.1', 8000)  back_log = 5  buffer_size = 1024  print('客户端开始运行。。。。')  while 1:      tcp_clent = socket.socket(socket.AF_INET, socket.SOCK_STREAM)      tcp_clent.connect(ipport)      fasong = input("请输入你要发送的东西:")      tcp_clent.send(fasong.encode('utf-8'))      print('已经发送')  tcp_clent.close()

tcp是一对一的通信,如果客户端关闭,服务器也会报错关闭,如果想持续运行,可以添加try expect去捕捉异常,然后实现连续的接收客户端的连接。

import socket  print('服务器运行了。。。。')  while 1:      try:          myfuwu = socket.socket(socket.AF_INET, socket.SOCK_STREAM)          myfuwu.bind(('127.0.0.1', 8000))          while 1:              myfuwu.listen(5)     #监听的客户端的数量,可自己定义数量              conn,addr = myfuwu.accept()  #链接到客户端              print(conn)              print(addr)              data = conn.recv(1024)   #接收的内容的大小              print('客户端发来:',data.decode('utf-8'))      except:          print("服务器运行多一次")    conn.close()  myfuwu.close