我是靠谱客的博主 勤奋裙子,最近开发中收集的这篇文章主要介绍python网络编程(TCP客户端/服务器端实现),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

下面的程序实现的功能:客户端发来消息,服务器端加上时间戳返回给用户
服务器端:

from socket import *
from time import ctime
import os
print(os.getpid())
HOST=''
POST=21567
BUFSIZ=1024
ADDR=(HOST,POST)#这里是配置套接字,比C语言的简单多了,没那么多结构体
tcpServerSocket=socket(AF_INET,SOCK_STREAM)#建立服务端的套接字
tcpServerSocket.bind(ADDR)#将地址与套接字绑定
tcpServerSocket.listen(5)#然后就是监听
try:
while True:
tcpClientSocket,clientaddr=tcpServerSocket.accept()#返回结果
print('...connected from :',clientaddr)
while True:
data=tcpClientSocket.recv(BUFSIZ).decode()
if not data:
break
tcpClientSocket.send(('[%s] %s' % (ctime(),data)).encode())
print(data)
else:
tcpClientSocket.close()
except Exception as e:
print(e)
finally:
tcpServerSocket.close()

客户端:

__author__ = 'qingjin'
from socket import *
HOST='172.18.255.236'
POST=21567
BUFSIZE=1024
ADDR=(HOST,POST)
tcpClientSocket=socket(AF_INET,SOCK_STREAM)
tcpClientSocket.connect(ADDR)
while True:
data=input('>')
if data.lower()=='q':
break
tcpClientSocket.send(data.encode())
data=tcpClientSocket.recv(BUFSIZE).decode()
if not data:
break
print(data)
tcpClientSocket.close()

在这里遇到了几个问题,说明一下,对以后也有帮助:
1.socket.gaierror: [Errno 11001] getaddrinfo failed
这个其实就是主机地址格式不对
2.TypeError: ‘str’ does not support the buffer interface
这个就是要加上encode(string转化成byte)和decode(相反)的原因
解决方法转自:Python 3中套接字编程中遇到TypeError: ‘str’ does not support the buffer interface的解决办法
3.我本来想通过创建线程来处理客户端的请求,发现os.fork()不能用,这个是在unix下用的,windows下没有。

最后

以上就是勤奋裙子为你收集整理的python网络编程(TCP客户端/服务器端实现)的全部内容,希望文章能够帮你解决python网络编程(TCP客户端/服务器端实现)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部