码迷,mamicode.com
首页 > 其他好文 > 详细

1、socket+threading编程之TCP

时间:2017-11-19 11:07:51      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:targe   为什么   异常   编程   nod   def   join()   switch   ret   

 

1、Server-TCP 

#coding:utf8

‘‘‘

我是在Mac下写的代码,不知道为什么在Windows上中文显示乱码,朋友建议我更改dos窗口编码,我建议朋友放弃Windows写python

‘‘‘

from socket import socket

def response(conn,addr):    

  data = conn.recv(1024)

  node = {‘1‘:1,‘2‘:2,‘3‘:3}        #这里参考我一个超级mini项目,本来是if...elif...else结构的,但是无奈选项太多,就用字典代替switch,大家参考一下这种处理问题的思路

  if node.has_key(data):        #判断字典中是否有data这个key

    conn.send(node[data])

    print ‘sent server to %s:%s‘%(addr[0],addr[1])  #addr不是字符串,而是一个元组

  else:

    conn.send(‘Error‘)

    print ‘Error Code‘

def server():

  address = (‘127.0.0.1‘,8888)

  server = socket(AF_INET,SOCK_STREAM)

  server.bind(address)

  server.listen(5)

‘‘‘

以上是建立socket套接字,由于是基于TCP传输的,大家都知道,TCP是可靠传输,得监听,确认连接,才发送数据

‘‘‘

  while 1:

    conn,addr = server.accept()

    response = threading.Thread(target=response,args=(conn,addr)) #利用多线程,同时处理多个请求

    response.start()

    #response.join()

if __name__ == ‘__main__:
  server()

 

Client-TCP

#coding:utf8

from socket import socket

def client(data):

  addr = (‘127.0.0.1‘,8888)

  client = socket(AF_INET,SOCK_STREAM)

  try:

    client.connect(addr)   #连接过程可能会出现异常,抛出异常

  except Exception as e:

    return ‘Connect error:%s‘%e

  client.send(data)         #请求服务

  server_response = client.recv(2048)   #服务器发送服务

  return server_response 

if __name__ == ‘__main__‘:

  data = raw_input(‘please input a number‘)

  node = {data,client(data)}    #这样写的话好点,也是基于我的超级mini小项目

  if node[data] == ‘Error‘:

    print ‘input Error,please input again‘

  else :

    print node[data]

 

1、socket+threading编程之TCP

标签:targe   为什么   异常   编程   nod   def   join()   switch   ret   

原文地址:http://www.cnblogs.com/zhyim/p/7859174.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!