投稿 资料上传 提问 搜索
您现在的位置是: 首页 > 问答 > 正文

socket编程

用python写socket编程,完成双机通信,可以进行消息的手法,协议是udp或tcp



问题回复
  1. 我叫你baba
    我叫你babaIT技术之家

    可以借鉴参考。。。。。

    回复
  2. 我叫你baba
    我叫你babaIT技术之家

    案例:

    客户端

    import socket
    addr = ('210.40.7.130',10000)#目标主机IP
    readdr = ('210.40.7.145',10000)#本主机IP
    s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

    s.bind(readdr)
    while 1:

    data = input("input:")
    if not data:
    break
    s.sendto(data.encode("utf-8"),addr)

    recivedata,addrg = s.recvfrom(2048)
    if recivedata:
    print("from:",addrg)
    print("got recive :",recivedata.decode())
    s.close()

    服务端

    import socket
    address = ('210.40.7.130',10000)#本主机IP
    readdr = ("210.40.7.145",10000)#客户端主机IP
    s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

    s.bind(address)
    while 1:
    data,addr=s.recvfrom(2048)
    if not data:
    break
    print("got data from",addr)
    print(data.decode())
    replydata = input("reply:")
    s.sendto(replydata.encode("utf-8"),readdr)
    s.close()

    服务端与客户端通信截图:

    客户端


    服务端


    注意点:

    1、如何出现打印的字符窜有b‘xxxxx’,如何去掉b?

    直接decode()一下;

    2、如果出现

    Traceback (most recent call last):
      File "C:/Users/vinsuan/PycharmProjects/untitled1/clientTest.py", line 6, in <module>
        s.bind(readdr)
    OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

    这是因为你之前运行的进程没有真正关闭,可以到任务管理器中去杀死名为“python”的进程

    3、如果出现拒绝连接,可以先尝试ping一下目标主机?如果出现超时,很可能是因为两台主机防火墙的原因,暂时关闭防火墙就行

    回复