python使用socket在同一局域网下不同电脑传输数据(tcp)

本次使用tcp协议传输数据(即套件字选择tcp对应的参数,SOCKET_STREAM)

一、前置条件:

         导入socket包,一个局域网下两台电脑(或者本地创建一个win虚拟机)

二、创建服务端

        1、创建套接字

        2、绑定本地信息

        3、使用listen将默认的套接字由主动变为被动

        4、等待客户端的链接(accept),并创建套接字为链接的客户端服务

        5、接收客户端的数据

        6、向客户端发送数据

        7、关闭套接字

from socket import *

def main():
    #创建套接字,监听套接字 负责等待新客户端进行链接
    tcp_server_socket = socket(AF_INET,SOCK_STREAM)
    #绑定本地信息
    tcp_server_socket.bind(('' ,7890))
    #将套接字由主动变为被动
    tcp_server_socket.listen(128)
    print('-------------listen---------')
    #accept 等待客户端的链接 accept产生的新套接字用来为客户端服务
    client_scoket,client_addr = tcp_server_socket.accept()
    print('-------------accept---------')
    print(client_addr)
    #接收客户端的信息
    recv_data=client_scoket.recv(1024)
    print(recv_data.decode('utf-8'))
    #向客户端发送信息
    client_scoket.send('呵呵呵呵'.encode('utf-8'))
    #关闭套接字
    client_scoket.close()
    tcp_server_socket.close()

if __name__ == '__main__':
    main()

        

三、创建客户端

        1、创建套接字

        2、链接服务端

        3、发送/接收数据

        4、关闭套接字

from socket import *

def main():
    # 创建套接字
    tcp_clien_socket = socket(AF_INET, SOCK_STREAM)
    # 链接服务器
    server_addr = ('192.168.25.234', 7890)
    tcp_clien_socket.connect(server_addr)
    # 发送/接收数据
    send_data = input('请输入要发送的数据')
    tcp_clien_socket.send(send_data.encode('utf-8'))
    rs_data = tcp_clien_socket.recv(1024)
    print(rs_data.decode('utf-8'))
    # 关闭套接字
    tcp_clien_socket.close()

if __name__ == '__main__':
    main()

四、注意!!:

        accept和recv在没有收到链接或者数据时是会造成函数堵塞的!!类似于input,只不过input的等待你在命令行输入数据,而accept和recv是等待客户端或者服务端的链接和数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值