python编写socket demo_Python socket编程

一、什么是socket:socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写...
摘要由CSDN通过智能技术生成

一、什么是socket:

socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

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

socket和file的区别:

1.> file模块是针对某个指定文件进行【打开】【读写】【关闭】

2.>socket模块是针对 服务器端 和 客户端Socket 进行【打开】【读写】【关闭】

Python 提供了两个基本的 socket 模块。

第一个是 Socket,它提供了标准的 BSD Sockets API。

第二个是 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。

socket Server端:

importsocket

s= socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建套接字,定义socket类型,网络通信,TCP

s.bind(('localhost',8880)) #绑定套接字到本地IP与端口

s.listen(5) #开始监听TCP连接

whileTrue:print "waiting....."conn,addr= s.accept() #接受TCP连接,并返回新的套接字与IP地址

print'Connected by',addr #输出客户端的IP地址

client_data = conn.recv(1024) #接收传来的数据

printclient_data

conn.send("hello,we are you server !!!") #发送给对方数据

conn.close() #传输完毕后,关闭套接字

socket Client端

importsocket

s= socket.socket() #创建套接字

s.connect(('localhost',8880)) #连接远端地址,这里为server端的ip和端口

s.send("we are you client") #发送给server端

server_data = s.recv(1024) #接收server端信息

printserver_data

s.close()#关闭连接

server端importsocket

ip_port= ('127.0.0.1',8888)

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)

s.bind(ip_port)whileTrue:

data= s.recv(1024)printdata-------------------------------------------------------------

#client端

importsocket

ip_port= ('127.0.0.1',9999)

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM,0)whileTrue:

inp= raw_input('data:').strip()if inp == 'exit':breaks.sendto(inp,ip_port)

s.close()

UDP Demo

使用web访问server端socket.

访问地址:http://localhost:8002

importsocketdefmain():#创建socket对象

sock =socket.socket(socket.AF_INET, socket.SOCK_STREAM)#监听端口

sock.bind(('127.0.0.1',8002))#开始监听,

sock.listen(5)whileTrue:#阻塞,deng 。。。。

#直到有请求连接

print '....'connection, address=sock.accept()#connection,代表客户端socket对象

#address,客户端IP地址

#handle_request(connection)

buf = connection.recv(1024)printbuf

connection.send("HTTP/1.1 200 OK\r\n\r\n")

connection.send("Hello, World")

connection.close()if __name__ == '__main__':

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值