Python中的网络编程

客户端和服务端的网络编程

在服务器相应客户端的请求之前,必须进行一些初步的设置流程来为之后的的工作做准备。首先会创建一个通信端点,他能够使服务器监听请求。可以把服务器比作公司主线呼叫的总机接线员,一旦设备安装成功且接线员到达时,服务就可以开始了。

套接字

套接字是计算机网络数据结构,他体现了“通信端点”的概念,在任何类型通信开始之前,网络运用程序必须创建套接字,就好比电话的插孔。

套接字地址:主机-端口对

如果一个套接字像一个电话插孔 —— 允许通信的一些基本设施,那么主机名和端口号就像区号和电话号码的组合。
一个网络地址是由主机名和端口号组成的,也是网络通信所需要的。有效的端口号范围在0 ~65535

1.面向链接的套接字 TCP

面向连接的通信提供序列化的,可靠和不重复的数据交付,而没有记录边界。这基本意味着每条信息都可以拆分成多个片段,并且每条信息片段都能到达目的地,然后他们将按顺序的组合在一起,最后将信息传递给运用程序。这种类型的通信也称为虚拟电路或流套接字。

2.无连接的套接字 UDP

虚拟电路形成鲜明对比是数据报类型的套接字,他是一种无连接的套接字。这意外着,在通信之前并不需要建立连接。此时,在数据传输过程中并无法保证他的顺序性,可靠性,重复性。然而,他保存了记录边界,这就意味着信息是整体发出的,而不是分成多段。

Python 中的网络编程

  1. 套接字对象内置方法
    在这里插入图片描述
    在这里插入图片描述

创建TCP服务器

from socket import *
from time import ctime

HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST,PORT)
tcpSerSock = socket(AF_INET,SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)

while True:
    print("waiting for conneectin...")
    tcpCliSock, addr = tcpSerSock.accept()
    print("...connected from :",addr)

    while True:
        data = tcpCliSock.recv(BUFSIZ)
        if not data:
            break
            tcpCliSock.send('[%s] %s' %(ctime(),data))
        tcpCliSock.close()
    tcpSerSock.close()

创建TCP客户端

from socket import*
from pip._vendor.distlib.compat import raw_input

HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST,PORT)

tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)

while True:
    data = raw_input('>')
    if not data:
        break
    tcpCliSock.send(data)
    data = tcpCliSock.recv(BUFSIZ)
    if not data:
        break
    print(data)
    tcpCliSock.close()
    pass

执行: 客户端
执行: 客户端

执行 :服务器
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值