Home  >  Article  >  Backend Development  >  Detailed introduction to socket network programming in python (with examples)

Detailed introduction to socket network programming in python (with examples)

不言
不言forward
2018-10-13 16:34:493075browse

This article brings you a detailed introduction to socket network programming in python (with examples). It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Three elements of network communication

  • IP

When communicating, both parties You must know the other party's identity, just like you must know the other party's email address when sending an email. The unique identifier of every computer on the Internet is its IP address, similar to 123.123.123.123.

The IP address is actually a 32-bit integer (called IPv4). The IP address represented by a string, such as 192.168.0.1, is actually a 32-bit integer grouped by 8 bits. The purpose is to facilitate reading. .
The IPv6 address is actually a 128-bit integer, which is an upgraded version of the currently used IPv4 and is represented by a string. Similar to 2001:0db8:85a3:0042:1000:8a2e:0370:7334 .
  • Port port

When two computers communicate, it is not enough to only send the IP address, because there are multiple computers running on the same computer. Network program. After an IP packet arrives, whether it is handed over to the browser or QQ requires a port number to distinguish.

Each network program applies for a unique port number from the operating system. In this way, two processes need their own IP addresses and respective port numbers to establish a network connection between two computers.

  • TCP/UDP protocol

In order to connect all different types of computers around the world, a set of A globally accepted protocol, everyone refers to the Internet protocol as TCP/IP protocol

socket programming

Socket is an abstract concept of network programming. Usually we use a Socket to mean "opening a network link", and to open a Socket you need to know the IP address and port number of the target computer, and then specify the protocol type.

import socket
# socket.gethostname()当不传入参数时,返回本机主机名
print(socket.gethostname()) #DESKTOP-EN0LQJH

#域名(英语:Domain Name),简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称
#通过域名查找服务器IP地址
print(socket.gethostbyname('www.baidu.com'))    #119.75.216.20

#通过一个IPv4的地址来获取主机信息
print(socket.gethostbyaddr('114.114.114.114'))

#通过IP/port组合,访问服务器信息
# 如果是AF_INET则格式为:(address, port),如果为AF_INET6,则返回(address, port, flow info, scope id)

print(socket.getaddrinfo('www.xunlei.com',80))

Detailed introduction to socket network programming in python (with examples)

Use socket to implement a simple web server

import socket
def reply_info(socketObj):
    # socketObj.send('ok')
    with open('hello.html') as f:
        socketObj.send(f.read().encode('utf-8'))
if __name__=="__main__":
    #1. 创建socket对象
    socket_server = socket.socket()
    #2. 绑定IP和端口
    socket_server.bind(('192.168.1.165',9999))
    print("服务器端已经启动9999端口......")
    #3. 监听是否有客户端连接
    socket_server.listen(5)

    while True:
        # 4. 接受客户端的连接
        socket_client,address = socket_server.accept()
        # 5. 接收客户端发来的信息
        data = socket_client.recv(1024)
        # 6. 与客户端进行交互, 返回给客户端信息
        reply_info(socket_server)
        socket_server.close()

The above is the detailed content of Detailed introduction to socket network programming in python (with examples). For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:segmentfault.com. If there is any infringement, please contact admin@php.cn delete