Python 网络编程-创建 TCP 服务器和客户端相互通讯

目   录

1. 套接字

1.1 套接字介绍

1.2 套接字地址

1.3 面向连接的套接字与无连接的套接字

2.创建 TCP 服务器和客户端相互通讯

2.1 服务器端代码实现

2.2 客户端代码实现

2.3 运行结果


1. 套接字

1.1 套接字介绍

        套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口。

        有两套套接字,一套是在同一台机器上的,即所谓的进程间通信 IPC(Inter Process Communication ),它是基于文件的,由文件系统来支持同一台机器上多个进程之间的共享常量。AF_UNIX 又叫 AF_LOCAL,是历史上第一个套接字家族。

        另外一套是在不同主机上进行的,是面向网络的,由自己的家族名字 AF_INET,AD_INET6是用于 IPV6 寻址的。

        AF_NETLINK 家族(无连接)允许使用标准的 BSD 套接字接口进行用户级别和内核级别代码之间的IPC,它新添加了系统调用、/proc支持等。

        Python 只支持 AF_UNIX、AF_NETLINK、AF_TIPC 和 AF_INET。

1.2 套接字地址

        套接字地址由两部分组成:IP 地址、端口号。

1.3 面向连接的套接字与无连接的套接字

        后续的 AF_INET 套接字家族示例,支持两种主流协议:

        1)面向连接的套接字,即面向 TCP 协议(传输控制协议)的套接字,使用 SOCKET_STREAM类型的套接字。

        2)面向无连接的套接字,即面向 UDP 协议(用户数据报协议)的套接字,使用 SOCKET_DGRAM 类型的套接字。

2.创建 TCP 服务器和客户端相互通讯

2.1 服务器端代码实现

from socket import * 
from time import ctime

HOST=''
PORT=21567
BUFSIZE=1024
ADDR=(HOST,PORT)

tcpSerSocket=socket(AF_INET,SOCK_STREAM)
tcpSerSocket.bind(ADDR)
tcpSerSocket.listen(5)

while True:
    print("waiting for connection....")
    tcpClientSock,addr=tcpSerSocket.accept()
    print("connecting from client:",addr)

    while True:
        data=tcpClientSock.recv(BUFSIZE)
        if not data:
            break
        tcpClientSock.send(bytes("Current time is {0}".format(ctime()),'utf-8'))
    tcpClientSock.close()
tcpSerSocket.close()

2.2 客户端代码实现

from socket import *
HOST="localhost"
PORT=21567
BUFSIZE=1024
ADDR=(HOST,PORT)
tcpClientSocket=socket(AF_INET,SOCK_STREAM)
tcpClientSocket.connect(ADDR)
while True:
    data=input("Please input your words!")
    if not data:
        break
    tcpClientSocket.send(bytes(data,"utf-8"))
    data=tcpClientSocket.recv(BUFSIZE)
    if not data:
        break
    print(data)
tcpClientSocket.close()

2.3 运行结果

服务器端:

客户端端:

 

 

'''

要是大家觉得写得还行,麻烦点个赞或者收藏吧,想个博客涨涨人气,非常感谢!

更欢迎大家一起来讨论,共同学习进步!

'''

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南野栀子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值