zoukankan      html  css  js  c++  java
  • 用python实现一个简单的socket网络聊天通讯 (Linux --py2.7平台与windows--py3.6平台)

    windows   --> windows 写法均在py3.6

    客户端写法

    import socket
    
    client = socket.socket()
    
    client.connect(('192.168.88.1', 9001))
    while 1:
        data_recv = client.recv(1024).decode('utf-8')
        print(data_recv)
    
        data_sent = input('client:')
        client.send(data_sent.encode('utf-8'))
        if data_sent == 'exit':
            break
    
    client.close()

    服务端写法

    import socket
    
    server = socket.socket()
    server.bind(('192.168.88.1', 9001))
    server.listen(5)
    print('等待链接中。。。。。')
    conn, addr = server.accept()  # 监听返回 链接和 地址
    print('connect succeed !')
    while 1:
        data_send = input('server:')
        conn.send(data_send.encode('utf-8'))
    
        data_recv = conn.recv(1024)
        print(data_recv.decode('utf-8'))
    
        if data_recv.decode('utf-8') == 'exit':
            break
    
    conn.close()

    服务端Linux(py2.7) 客户端 windows(py3.6)

    linux 服务端

    #!usr/bin/bash pyhton
    #_*_ coding:utf8 _*_
    
    # 支持中文 公网聊天
    
    import socket
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')      # 为了支持中文 加入以上代码
    
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)     # 参数的作用是指定协议  必须加
    addr_port = ('172.17.226.72',3389)   # Linux 中不准绑定公有ip 服务端必须绑定公网ip 端口必须是开放的
    server.bind(addr_port)
    server.listen(5)
    conn,addr = server.accept()
    print('connect succeet')
    while 1:
        data_send = raw_input('server:')
        conn.send(data_send.encode('utf-8'))
    
        data = conn.recv(1024)
        print(data.decode('utf-8'))
    
    conn.close()

    windows 客户端写法

    import socket
    test  = socket.socket()
    
    test.connect(('39.106.40.169', 3389)) # 链接公网ip 与对应端口
    while 1:
        data = test.recv(1024).decode('utf-8')
        print(data)
        data_send = input('-----')
        test.send(data_send.encode('utf-8'))
  • 相关阅读:
    php 计算代码执行时间
    高级php面试题
    MongoDB 或者 redis 可以替代 memcached 吗?
    mysql中myisam,innodb和memory三个存储引擎的区别
    C#发送邮件代码
    使用bootstrap table时不能显示筛选列和分页每页显示的行数
    vue2中,字符串里如何拼接绑定对象
    压缩图片方法
    jquery的ajax方法,在返回中,find方法不起作用
    vue2中,在google浏览器中正常,在ie11中不解析
  • 原文地址:https://www.cnblogs.com/Mr-wangxd/p/9580376.html
Copyright © 2011-2022 走看看