网络socket编程

socket有两种类型:TCP和UDP

TCP要求收发数据的双方扮演不同的角色:服务器和客户端

服务器会被动等待客户端连接,它自己不会主动发送请求

服务端

import socket  #第一行我们打入socket这个库

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s :
    # socket.AF_INET代表我们使用的是ipv4的地址家族 socket.SO_MARK代表我们使用的是TCP协议
    # 然后我们调用socket中socket()来创建一个socket s
    s.bind(("0.0.0.0", 1234))
    # 接下来的bind()将我们创建的这个 ,关联到主机的某一个网卡和端口上,网卡我们可以通过IP地址指定
    s.listen()  #接下来的listen将socket视为监听状态,并等待客户端的连接
    c, addr = s.accept() #再下面的accept会接受来自任意客户端的连接,并返回一个新的socket c 以及客户端的IP地址
    with c:
        print(addr, "connected.")
        while True: # 然后是一个循环
            data = c.recv(1024)  #这个循环会一直调用recv()接受客户端传来的信息
            if not data: #然后只要数据不为空
                break
            c.sendall(data) # 我们就原封不动的将数据回传给客户端

 客户端

import socket

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s :
   s.connect(("127.0.0.1", 1234))
#不同的是我们直接调用connect()并传入服务器IP地址和端口号
   s.sendall(b"Hello,Ross!")  #随后我们调用sendall()函数发送一条消息给服务器
#b"Hello,Ross!"是一个字节序列不是字符串
   data = c.recv(1024)  #这个循环会一直调用recv()接受客户端传来的信息
   print(Received:", repr(data)) 
#并将结果打印出来
   withe True:
       c, addr = s.accept()
       t = threading.Thread(target=handle_client, args=(c, addr))
       t.start()

​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值