网络基础

it2025-04-25  7

网络基础

对于这个网络基础,需要你懂的一点TCP/IP协议的相关知识,最起码知道socket(套接字)是什么。简单来说,套接字就是由地址和端口组成。其次就是懂的socket这个python的模块。


socket:底层网络接口

该模块提供对BSD套接字接口的访问。 它可以在所有现代的Unix系统,Windows,MacOS和其他可能的平台上使用。因为调用了操作系统套接字APIs,所以一些行为在不同操作系统上可能不一样。python接口是将Unix系统调用和库接口直接转换为Python的面向对象样式,socket()函数返回一个套接字对象,这个对象的方法(比如下文的send和recv方法)实现各种套接字系统调用。参数类型封装程度比c接口要高,很多细节我们不用管。(英文好的看官方文档)


TCP客户端1

这个客服端是用来连接百度的服务器的。接下来我们构建另一个客户端,连接自己写的的服务器。

TCP客户端2

先上代码:

import socket target_host = "127.0.0.1" target_port = 8888 #创建一个socket对象 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #连接客户端 client.connect((target_host, target_port)) #发送一些数据 client.send(b"Today is 520\n") #接收一些数据 response = client.recv(4096) print(response)

首先,我们要明白这个客服端的作用:如果在另一台你能连通的主机上,已经启用了TCP服务端,那么通过这个客服端,你便能发送信息并且接收响应。它们之间的通信通路,便是由socket(即服务端ip地址,端口和客户端ip地址以及端口)建立的

TCP服务端

这个服务端是和上面TCP客户端2配套使用的 import socket import threading

bind_ip = "127.0.0.1" bind_port = 8888 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((bind_ip, bind_port)) server.listen(5) print("[*] Listening on %s:%d" % (bind_ip, bind_port)) def handle_client(client_socket): request = client_socket.recv(1024) print("[*] Received: %s" % request) client_socket.send(b"ACK!") client_socket.close() while True: client, addr = server.accept() #print(client) # output:<socket._socketobject object at 0x7f3628764280> TCP server正是通过这个client对象与客户端通信的 #print(addr) output:('127.0.0.1', 58542) 这里的58542是端口号,是系统随机分配的 print("[*] Accepted connection from:%s:%d" % (addr[0], addr[1])) client_handler = threading.Thread(target=handle_client, args=(client, )) client_handler.start()

看运行结果: 是不是很简单?

转载于:https://www.cnblogs.com/busui/p/6881581.html

最新回复(0)