您的位置:首页 > 理论基础 > 计算机网络

socket网络编程

2015-11-27 20:41 483 查看
socket是什么

socket

• 什么是socket 所谓socket通常也称作”套接字”,用于描述IP地址和端口,

是一个通信链的句柄。应用程序通常通过”套接字”向网络发出请求或

者应答网络请求。说白了就是一种通信机制。它类似于银行,电信啊

这些部分的电话客服部门。你打电话的时候,那边会分配置一个人回 答你的问题,客服部门就相当于socket的服务器端了,你这边呢就相

当于客户端了,在和你通话结束前,如果有人在想找和你通话的那个

说话,是不可能的,因为你在和他通信,当然客服部门的电话交换机

也不会重复分配。

socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”, 都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。 Socket就是该模式的一个实现,socket即是一种特殊的文件,一些 socket函数就是对其进行的操作(读/写IO、打开、关闭)

分为客户端和服务端

服务端代码如下

#_*_ coding:utf-8 _*_
import socket
sk = socket.socket()
ip_port =('127.0.0.1',65500)
sk.bind(ip_port)
sk.listen(5)
while True:
#sk.socket返回是个元组,一共有两个值  coon表示假如lazup连接到serve,那么conn就是lazup
#address表示lazup的地址
conn,address = sk.accept()
conn.send('hello')
flag =True
while flag:
data=conn.recv(1024)
print data
if data=='exit':
flag='False'
break
conn.send('sb')
conn.close()


客户端的代码如下

#_*_ coding:utf-8 _*_
import socket
client =socket.socket()
ip_port =('127.0.0.1',65500)
client.connect(ip_port)
while True:
data =client.recv(1024)
print data
inp =raw_input('client :')
client.send(inp)
if inp =='exit':
break


上面这么写只能实现一个客户端访问服务器,要向多个客户端访问服务器那么就得导入 SocketServer模块

代码如下(只改动server,client不变)

import SocketServer

class  MyServer(SocketServer.BaseRequestHandler):
def setup(self):
pass
def handle(self):
conn=self.request
conn.send('hello')
flag =True
while flag:
data=conn.recv(1024)
print data
if data=='exit':
flag='False'
break
conn.send('sb')
conn.close()
def finish(self):
pass

if __name__ == '__main__':
server = SocketServer.ThreadingTCPServer(('127.0.0.1',65500),MyServer)
server.serve_forever()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: