python---基础知识回顾(十)进程和线程(进程)

python---基础知识回顾(十)进程和线程(自定义线程池)

一:Socket

(一)套接字了解

网络套接字,用于描述IP地址和端口,是一个通信链句柄,一般,应用程序通过对这个句柄进行读写操作,可以对网络发出或者应答网络请求。也是一种特殊的文件(起源Unix,一切皆是文件)

socket主要支持两种类型的套接字,流套接字和数据报套接字。(其实还有其他的)

SOCK_STREAM :流套接字(TCP)提供了双向有序且不重复的数据服务。

SOCK_DGRAM:数据报套接字(UDP)虽然支持双向的数据流,但是对报文的有序性和可靠性不保证。

套接字家族也主要使用两种,基于文件和基于网络类型的套接字家族

基于文件类型的套接字家族:AF_UNIX

调用的就是底层的文件系统来取数据,两个套接字进程运行在统一机器,可以通过访问同一个文件系统间接完成通信

基于网络类型的套接字家族:AF_INET

所有地址家族中,AF_INET是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程,所以大部分时候我么只使用AF_INET

(二)socket工作方式(TCP)

套接字在工作时将连接的双方分为服务器端和客户端,C/S模式的由来。

python---基础知识回顾(六)网络编程

 

 

 

import socket

ip_port = ('127.0.0.1',8080)    #用于绑定本机地址和端口

sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM)   #里面的参数是默认的,可以不写
sk.bind(ip_port)    #绑定连接地址和端口

sk.listen(5)    #设置监听数量

while True:
    print("Server waiting...")
    conn,addr = sk.accept() #返回客户端套接字和地址
    print("Connect from",addr)

    client_data = conn.recv(1024)   #从客户端套接字中读取1024字节数据
    print("Recv:%s"%client_data.decode("utf-8"))
    conn.sendall("接收到你的数据".encode("utf-8"))

    conn.close()    #关闭客户端套接字的连接
sk.close()
socket server(注意网络中数据传递是字节型传递,记得解码和编码

相关文章:

  • 2021-10-17
  • 2021-04-17
  • 2021-07-16
  • 2021-07-22
  • 2021-07-09
猜你喜欢
  • 2021-07-24
  • 2021-05-30
  • 2022-01-01
  • 2022-03-07
  • 2022-12-23
  • 2021-08-04
相关资源
相似解决方案