在python socket(一)中,客户端每次只能发送一次消息,然后连接就断开。
把客户端修改一下,加入一个循环就能让它发送多个消息和接收。
server端代码:
# -*- coding: utf-8 -*-
##
# socket_server
# Created on July 7 2016
# @author:huangpingyi
##
import socket
HOST = '' # 本地localhost
PORT = 50007
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()#接受连接
print 'Connected by', addr
while True:
data = conn.recv(1024) # 1024个字节
#单连接,没有数据断开,服务器断开
if not data:
break
print 'Received', data
msg = raw_input(">>:").strip()
if len(msg) == 0:
continue
#s.sendall('Hello Huangpingyi')
conn.sendall(msg)
conn.close()
client端
# -*- coding: utf-8 -*-
##
# socket_client
# Created on July 7 2016
# @author:huangpingyi
##
import socket
HOST = 'localhost'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
while True:
msg = raw_input(">>:").strip()
if len(msg) == 0:
continue
elif msg == "exit":
break
#s.sendall('Hello Huangpingyi')
s.sendall(msg)
data = s.recv(1024)
print 'Received', data
s.close()
客户端先发消息,因为服务器端是被动的,只有监听到客户端有连接时才能回应。
客户端输入exit时,连接断开。