ღ Miranda

Python 网络编程

介绍简单的的套接字客户端与服务器端编程。

套接字

套接字是一种具有“通信端点”概念的计算机网络数据结构,网络化的应用程序在开始任何通讯前都要创建套接字。一开始,套接字被用于一台主机上不同程序间的通讯,套接字分为文件型和基于网络型的。Unix套接字家族名为AF_UNIX,基于网络的地址家族叫AF_INET,基于IPV6的地址家族叫AF_INET6。Python只支持AF_INET, AF_NETLINK, AF_UNIX

面向连接

在通信前要建立连,称为流套接字,实现这种连接的主要协议就是传输控制协议(TCP)。建立TCP套接字要使用SOCK_STREAM。

无连接

实现这种连接的协议是用户数据报协议(UDP),创建UDP套接字要指定套接字类型为SOCK_DGRAM。

socket()模块函数

创建一个套接字要这样调用:

创建一个TCP服务器

python核心编程一书上的源码有错误,正确如下:

创建一个TCP客户端

python3里要把tcpCliSock.send(data)改为tcpCliSock.sendto(data.encode(), ADDR)

创建一个UDP服务器

在python3里要把udpSerSock.sendto('[%s] %s' % (ctime(), data), addr)改为udpSerSock.sendto(('[%s] %s' % (ctime(), data)).encode(), addr)

创建一个UDP客户端

python3里要把raw_input('> ')改为input('> '),把udpCliSock.sendto(data, ADDR)改为udpCliSock.sendto(data.encode(), ADDR)

一个小问题

在python3中要把send改为sendto函数,具体就是把tcpCliSock.send(data)改为tcpCliSock.sendto(data.encode(), ADDR)可在客户端打出的返回数据前有个b:

问题出在print(data)这里,只要将这句改为print(data.decode())即可以解决。

发表评论

电子邮件地址不会被公开。