zoukankan      html  css  js  c++  java
  • 网络编程之实现客户端与服务端聊天

    客户端代码:

    import socket
    sk = socket.socket()
    address = ('127.0.0.1',8008)
    sk.connect(address)    #连接服务端
    print('已连接')
    以上代码实现与服务端的连接。连接以后下面开始交互,必须是一收一发
    while True:
        inp = input('>>>')
        if inp == 'exit':   #如果输入exit,退出循环
            break
        elif inp == '':     #如果输入的内容为空,提醒用户,并让他重新输入
            print('不能输入空白字符')
            continue
        sk.send(bytes(inp,'utf8'))     #发送信息
        data = sk.recv(1024)         #接收信息
        print(str(data,'utf8'))
    sk.close      #关闭客户端连接

    服务端代码:

    import socket
    sk = socket.socket()   #给socket创建对象
    address = ('127.0.0.1',8008)  #设置服务端的IP地址和端口号
    sk.bind(address)    #绑定地址
    sk.listen(3)    #设置客户端请求连接的排队数量(每次只能连接一个客户端)
    注意:1.下面需要客户端连接,连接之前将在此阻塞
    2.conn接收客户端对象,addr接收客户端IP地址和端口号
    3.连接成功后,开始信息交互
     1 while True:
     2     print('waiting for connection..........')
     3     conn, addr = sk.accept()  # 在此接受客户端连接
     4     while True:
     5         try:
     6             data = str(conn.recv(1024),'utf8')      #接收客户端信息
     7             if  data != '':
     8                 print(data)
     9             else:        #如果接收到空内容,等待用户输入并重新接收
    10                 continue
    11         except Exception as e:
    12             print(e)
    13             break
    14         while True:
    15             inp = input('>>>')
    16             if inp == '':
    17                 print('不能发送空白字符')
    18                 continue
    19             conn.send(bytes(inp,'utf8'))   #收发的内容必须是bytes类型
    20             break
    21 sk.close()
    在此加一个异常处理:当客户端强制关闭连接时报出异常,并等待下一个客户端连接
    Linux下无需加异常处理,因为它会将强制关闭连接当做收到空值处理
     
     
  • 相关阅读:
    集群架构搭建
    THUWC2019 游记
    【集训队互测2015】未来程序·改
    [NOIP2014普及组T1]珠心算测验
    [CF912D]Fishes
    [POJ2409]Let it Bead
    golang 统计系统测试覆盖率
    tcpdump常用方法
    数学闯关引发的思考
    linux lsof常用方法
  • 原文地址:https://www.cnblogs.com/Finance-IT-gao/p/10584792.html
Copyright © 2011-2022 走看看