socket

1 服务器端

 

# import socket
# phone = socket.socket(socket.AF_INET , socket.SOCK_STREAM) #表明遵守网络的TCP协议
# phone.bind(('192.168.1.132',8080))
# phone.listen(5)
# print('----->')
# conn,addr= phone.accept()#等电话
# print('===>')
# msg = conn.recv(1024) # 收消息
# print('客户端发来的消息是',msg)
# conn.send(msg.upper()) #发消息
# conn.close()
# phone.close()

# 如何进一步的活化形成信息一来一往的过程:在信息处加上循环
# from socket import *
# #ip_port=('192.168.1.132',8080)
# ip_port=('192.168.100.122',8080)
# back_log=5
# buffer_size=1024
#
# tcp_server=socket(AF_INET,SOCK_STREAM)
# tcp_server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)#如果服务器在等待中的时间过长,使得端口被占用报错
# # 说‘Address already in use’,那么就加上这句命令
# tcp_server.bind(ip_port)
# tcp_server.listen(back_log)
# print('服务端开始运行了')
# while True: # 可以保证不端的有客户链接的信息进来
#     conn,addr=tcp_server.accept()
#     print('双向链接是',conn)
#     print('客户端地址',addr)
#
#     while True: #保证了同一链接客户下不断的信息能接受到
#         try:
#             data=conn.recv(buffer_size)
#             print('客户端发来的消息是',data.decode('utf-8'))
#             conn.send(data.upper())
#         except Exception:
#             break
#
# conn.close()
# tcp_server.close()


# UDP方式
from socket import *
ip_port=('192.168.100.122',8080)
buffer_size = 1024
udp_server = socket(AF_INET,SOCK_DGRAM) # udp是基于网络的数据报方式的套接字 不需要链接挂起
udp_server.bind(ip_port)

while True:
    data,addr= udp_server.recvfrom(buffer_size)# 收到消息时,除了消息,会有对方的ip_port号
    print(data,addr) #b'hello' ('192.168.100.122', 60786) 因为是在一台设备上操作,所以ip地址一样,但端口不一样
    #udp_server.sendto(data.upper(),addr) # 发消息时除了消息,要有对方的ip_port号
    import time
    back_time = time.strftime('%Y-%m-%d %X')
    udp_server.sendto(back_time.encode('utf-8'),addr)

2客户端

# import socket
# phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# phone.connect(('192.168.1.132',8080)) #拨通电话
# phone.send('hello'.encode('utf-8'))#注意是.不是,
# data = phone.recv(1024)
# print('收到服务端发来的消息:',data)

# 如何进一步的活化形成信息一来一往的过程:信息处加上循环
# from socket import *
# ip_port=('192.168.100.122',8080)
# back_log=5
# buffer_size=1024
#
#
# tcp_client=socket(AF_INET,SOCK_STREAM)
# tcp_client.connect(ip_port)
#
# while True:
#     msg = input('>>: ').strip()
#     tcp_client.send(msg.encode('utf-8'))
#     print('客户端已经发送消息')
#     data=tcp_client.recv(buffer_size)
#     print('收到服务端发来的消息',data.decode('utf-8'))
#
# tcp_client.close()

# UDP方式
from socket import *
ip_port=('192.168.100.122',8080)
buffer_size=1024

udp_client = socket(AF_INET,SOCK_DGRAM)

while True:
    msg = input('>>:').strip()
    udp_client.sendto(msg .encode('utf-8'),ip_port) # 表示直接把某消息发给了服务器

    data,addr = udp_client.recvfrom(buffer_size)
    print(data.decode('utf-8'))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值