python socket(二)接收多个消息

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时,连接断开。







发布了55 篇原创文章 · 获赞 22 · 访问量 8万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章