zoukankan      html  css  js  c++  java
  • socket创建TCP服务端和客户端

    看情况选择相对应的套接字
    *面向连接的传输--tcp协议--可靠的--流式套接字(SOCK_STREAM)
    *面向无连接的传输--udp协议--不可靠的--数据报套接字(SOCK_DGRAM)

    在liunx中  telnet ip port 可以当成临时客服端

    服务端示例:
    
    创建服务端示例:
    from socket import *
    
    #创建套接字(参数:地址族类型,套接字类型,选定子协议类型)
    sockfd = socket(AF_INET,SOCK_STREAM,proto = 0)
    
    #绑定地址(功能:绑定地址,参数(ip,port))
    sockfd.bind(("0.0.0.0",9099))
    
    #设置监听(参数:监听队列的大小)
    sockfd.listen(5)
    
    #等待接收连接(会进行阻塞,当客户端连接就往下运行)
    #返回值:connfd 新的套接字,用于和客户端通信,add 连接客户端的地址(ip,port)
    print("Waiting for connect...")
    connfd,addr = sockfd.accept()
    print("Connect from",addr)
    
    #收发消息(没接收到消息也会进行阻塞)
    #参数:一次接收消息的大小字节(bytes格式)
    data = connfd.recv(1024)
    print(data)
    
    #要发送的内容(bytes格式),返回实际发送的字节数
    n = connfd.send(b"Receive your message")
    print(n)
    #关闭套接字
    connfd.close()
    sockfd.close()
    
    
    客户端示例:
    from socket import *
    
    #创建套接字
    sockfd = socket(AF_INET,SOCK_STREAM)
    
    #发起连接
    server_addr = ("127.0.0.1",9099)
    sockfd.connect(server_addr)
    
    #收发消息
    data = input("发送>>")
    sockfd.send(data.encode())  #将字符串转换成二进制
    
    data = sockfd.recv(1024)
    print("接收到:",data.decode())
    
    #关闭字节套
    sockfd.close()  
  • 相关阅读:
    手机端适配rem代码片段
    location记录<18.7.21>
    本地储存(localStorage)记录
    为什么size_t重要?(Why size_t matters)(转)
    Mac OS X 完全卸载MySQL
    ECMAScript6兼容性
    mac截屏
    javascript中array的map方法的使用
    Jquery对话框基本配置
    angular中封装fancyBox(图片预览)
  • 原文地址:https://www.cnblogs.com/zengsf/p/9595241.html
Copyright © 2011-2022 走看看