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下没有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值