zoukankan      html  css  js  c++  java
  • socket网络通信

    socket通信一定有两个端,服务器端和客户端。

    服务器端server.py
    import socket
    
    servers = socket.socket()		# 默认是TCP协议
    servers.bind(("127.0.0.1", 8888))
    servers.listen(5)
    # sock就是客户端进行首发数据的通道, address就是客户端ip
    sock, address= servers.accept()		# accept是用来阻塞的,一直在监听客户端的连接
    recv_data = sock.recv(1024)
    send_data = '来了老弟' + recv_data.decode()
    sock.send(send_data.encode())
    
    sock.close()
    servers.close()
    
    • 导包
    • 创建服务器套接字
    • 绑定服务器IP和端口号
    • 设置允许有多少个客户端连接
    • 监听有没有客户端来连接服务器,如果有客户端连接,返回两个参数
    • 接收客户端发过来的数据
    • 发送响应
    • 关闭连接
    客户端client.py
    import socket
    
    client = socket.socket()
    client.connect(("127.0.0.1", 8888))
    data = input(">>") 		# 自己输入发送的信息
    client.send(data.encode())
    recv_data = client.recv(1024)
    print(recv_data)
    client.close()
    
    • 创建一个socket套接字
    • 连接服务器
    • 输入信息
    • 发送信息给服务器
    • 接收服务器返回的信息
    • 关闭连接
    terminal1: python server.py
    terminal2: python client.py
    
    termina2: >> 来了老哥
    来了老弟,来了老哥
    
    不断地接收数据!客户端发送的是空数据就断开链接
    import sockey
    
    server.py >>
    
    servers = socket.socket()		# 默认是TCP协议
    servers.bind(("127.0.0.1", 8888))
    servers.listen(5)
    # 不断接收
    while True:
    	sock, address= servers.accept()		
    	recv_data = sock.recv(1024)
        # 如果接收到一个空数据就关闭
            if not recv_data:
            break
    	send_data = '来了老弟,' + recv_data.decode()
    	sock.send(send_data.encode())
    
    sock.close()
    servers.close()
    
    client.py >>
    
    client = socket.socket()
    client.connect(("127.0.0.1", 8888))
    
    while True:
            data = input(">>") 	
        # 如果客户端发送的是空数据,断开链接
            if not data:
            break
            
    	client.send(data.encode())
    	recv_data = client.recv(1024)
    	print(recv_data)
    client.close()
    
  • 相关阅读:
    JMeter使用正则表达式提取相应信息
    Python的configparser生成配置文件,以及相关操作
    Python函数主要的作用
    Python函数传参位置关系总结
    Python中的作用域
    Python高阶函数解析
    Python中set集合的增加,update和add的区别
    Oracle 11g服务详细介绍及哪些服务是必须开启的?
    javacc jjtree 写法 以及 jj写法 基本语法 以及应用
    Python 3.3 try catch所有的错误Error,不包括Exception。关键在于 sys.exc_info()
  • 原文地址:https://www.cnblogs.com/lance-lzj/p/13955218.html
Copyright © 2011-2022 走看看