zoukankan      html  css  js  c++  java
  • Socket网络编程实例1

    Socket: 对所有上层协议(TCP/IP,UDP等)的底层封装。

    网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

    建立网络通信连接至少要一对端口号(socket)。

    协议类型又叫地址簇

     socket实例,分别写在两个.py里面,客户端发出去的内容是小写的,接收到的内容是大写的。

    运行的时候,先运行server,再运行client端。

    #服务器端
    import socket
    server=socket.socket()
    server.bind(('localhost',6969)) #绑定要监听哪个IP地址和端口
    server.listen() #开始监听
    print("我要开始等电话了")
    conn,addr=server.accept() #每进来一个链接,服务器端都会为那个链接生成一个实例。阻塞
    print(conn,addr) #就是客户端连过来而在服务器端为其生成的一个连接实例。
    print("电话来了")
    data=conn.recv(1024) #从客户端接收数据的大小。最大8192.如果客户端没有传回来数据,则会一直阻塞到这里。
    print("recv:",data)
    conn.send(data.upper())
    server.close()
    

     客户端一断开,conn.recv收到的就都是空数据了,就会陷入死循环。

    #客户端
    #(发出去的内容是小写的,收到的回应是大写的。)
    import socket client=socket.socket() #声明socket类型,同时生成socket连接对象;定义地址簇和协议类型(默认IPV4和TCP/IP) client.connect(("localhost",6969)) #连接本机的6969端口 client.send(b"hello server, I am client") data=client.recv(1024) #1024个字节,接受服务器端的返回 print("recv:",data) client.close()

     服务器端的运行结果:

    我要开始等电话了
    <socket.socket fd=288, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 6969), raddr=('127.0.0.1', 50703)> ('127.0.0.1', 50703)
    电话来了
    recv: b'hello server, I am client'
    

     客户端的运行结果:

    recv: b'HELLO SERVER, I AM CLIENT'
    

    2.所有的来往数据必须是byte类型的。

    #服务器端
    import socket
    server=socket.socket()
    server.bind(('localhost',6969)) #绑定要监听的端口
    server.listen() #监听
    print("我要开始等电话了")
    conn,addr=server.accept()
    print(conn,addr) #就是客户端连过来而在服务器端为其生成的一个连接实例。
    print("电话来了")
    data=conn.recv(1024)
    print("recv:",data)
    conn.send("我是服务器端来的确认信息".encode("utf-8"))
    #conn.send(data.upper())
    server.close()
    
    #客户端(发出去的内容是小写的,收到的回应是大写的。)
    import socket
    client=socket.socket()
    #声明socket类型,同时生成socket连接对象;定义地址簇和协议类型(默认IPV4和TCP/IP)
    client.connect(("localhost",6969)) #连接本机的6969端口
    client.send("我要准备下载电影a".encode("utf-8"))
    data=client.recv(1024) #1024个字节,接受服务器端的返回
    print("recv:",data.decode())
    client.close()
    
  • 相关阅读:
    技术面试问题汇总第005篇:猎豹移动反病毒工程师part5
    技术面试问题汇总第004篇:猎豹移动反病毒工程师part4
    Hexo安装和配置
    hexo从零开始到搭建完整 转
    window下phpstudy的nginx配置虚拟主机
    CentOS Linux搭建SVN服务器
    解决CentOS7关闭/开启防火墙出现Unit iptables.service failed to load: No such file or directory.
    numpy使用
    Linux学习15_CentOS6.5下netcat工具安装教程
    中国天气网七天天气
  • 原文地址:https://www.cnblogs.com/momo8238/p/7269180.html
Copyright © 2011-2022 走看看