• python socket 基本使用


    socket通常也叫做“套接字”,用于连接server client,是一个通信链的句柄,应用程序通常通过套接字向网络发出请求或应答网络请求。

    就像python 处理file一样:

    file是针对某个文件 打开-->读写-->关闭

    socket是针对服务器 客户端进行 打开-->读写-->关闭

    server部分:

    import socket,sys
    server_address=('127.0.0.1', 8000)
    BUF_SIZE=1024
    try:
       server_sk=socket.socket(socket.AF_INET, socket.SOCK_STREAM)     #创建新的socket对象
    except socket.error, msg:
       print "socket create fail, error code:" + str(msg[0]) + 'error message:' + msg[1]
    print 'socket create successfully'
    try:
       server_sk.bind(server_address)                                   #绑定server地址,address取决于地址族,AF_INET以元组表示
    except socket.error, msg:
       print "socket bind address error:" + str(msg[0]) + 'error mssage:' + msg[1]
    print 'socket bind address successfully'
    
    server_sk.listen(5)
    print "listening..."
    
    while True:
       client_sk, client_addr = server_sk.accept()
       print "connected by:", client_addr
       while True:
          data=client_sk.recv(BUF_SIZE)
          print data
          client_sk.sendall(data)
    
    server_sk.close()
    参数一:地址簇
    socket.AF_INET IPv4(默认)
    socket.AF_INET6 IPv6
    参数二:类型
    socket.SOCK_STREAM  流式socket , for TCP (默认)
    socket.SOCK_DGRAM   数据报式socket , for UDP
    Client部分:
    import socket,sys
    server_address=('127.0.0.1', 8000)
    BUF_SIZE=1024
    
    try:
       client_sk=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    except socket.error, msg:
       print "socket create fail, error code:" + str(msg[0]) + 'error message:' + msg[1]
    
    client_sk.connect(server_address)
    while True:
       data= raw_input('please input your sending message->')
       if not data:
          print "input data cannot be empty, please input again.."
          continue
       client_sk.sendall(data)
       recv_data = client_sk.recv(BUF_SIZE)
       print recv_data
    
    client_sk.close()

    server 输出:

    socket create successfully
    socket bind address successfully
    listening...
    connected by: ('127.0.0.1', 63388)
    aa

    client 输出:

    please input your sending message->aa
    aa
    please input your sending message->

  • 相关阅读:
    sql FLOAT字段使用like查询
    关于sql--时间范围查询重叠
    关于java时间类型比较
    前端-搜索无结果时,怎么把“暂无数据“显示出来?
    v-for动态赋值给不同的下拉框input
    Java的优先队列PriorityQueue详解
    软件体系架构阅读笔记八
    字符数组和字符串之间的转换
    Java快速输入输出
    软件体系架构阅读笔记七
  • 原文地址:https://www.cnblogs.com/nevermore29/p/9592080.html
Copyright © 2020-2023  润新知