socket网络编程

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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值