您的位置:首页 > 编程语言 > Python开发

python socket学习

2016-03-02 00:00 811 查看
摘要: 第一次接触socket,一直以为会先php接触到socket,懒一直没看。。 看到python的socket的学习学习

#server.py
#coding:utf-8
import socket

sk = socket.socket()
ip_port = ('127.0.0.1',9999)
sk.bind(ip_port)
sk.listen(5)

while True:
conn,address = sk.accept()
conn.send('hello.')
flag = True
while flag:
data = conn.recv(1024)
print data
if data =='exit':
flag = False
conn.send('sx')
conn.close()


#client.py
#coding:utf-8

import socket

client = socket.socket()
ip_port = ('127.0.0.1',9999)

client.connect(ip_port)
while True:
data = client.recv(1024)
print data
inp = raw_input('client:')
client.send(inp)
if inp =='exit':
break


异步多线程服务端Server.py

#coding:utf-8
import SocketServer

class  MyServer(SocketServer.BaseRequestHandler):

def setup(self):
pass

def handle(self):
# print self.request,self.client_address,self.server
#self.request = socket
#
conn = self.request
conn.send('hello.')
flag = True
while flag:
data = conn.recv(1024)
print data
if data =='exit':
flag = False
conn.send('asd')
conn.close()

def finish(self):
pass

if __name__ == '__main__':
server = SocketServer.ThreadingTCPServer(('127.0.0.1',9999),MyServer)
server.serve_forever()

socket 上传文件

#!/usr/bin/env python
#coding:utf-8

import SocketServer
import os

class MyServer(SocketServer.BaseRequestHandler):
def handle(self):
base_path = 'G:/temp'
conn = self.request
print 'connected...'
while True:
pre_data = conn.recv(1024)
&n
7fe8
bsp;#获取请求方法、文件名、文件大小
cmd,file_name,file_size = pre_data.split('|')
#已经接收文件的大小
recv_size = 0
#上传文件路径拼接
file_dir = os.path.join(base_path,file_name)
f = file(file_dir,'wb')
Flag = True
while Flag:
#未上传完毕,
if int(file_size)>recv_size:
#最多接收1024,可能接收的小于1024
data = conn.recv(1024)
recv_size+=len(data)
#上传完毕,则退出循环
else:
recv_size = 0
Flag = False
#写入文件
f.write(data)
print 'upload successed.'
f.close()

instance = SocketServer.ThreadingTCPServer(('127.0.0.1',9999),MyServer)
instance.serve_forever()

server
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: