socket介绍Socket也叫“套接字”。Socket会通过udp/tcp协议发送数据,实现两台机器之间的简单通信。注意:如果要使用socket实现两台机器之间的简单通信,请确保两台机器连接到同一个局域网。当然socket也可以实现一台机器的通信,只需要将连接对象ip设置为127.0.0.1,即本机ip即可。示例这里仅显示了一些有用的函数。函数说明socket.socket()创建一个套接字socket.bind()绑定一个ip和端口,传入参数是一个元组socket.recv()接受数据socket.send()发送数据socket.close()关闭socketsocket.connect()连接到一个ip和端口socket.listen()在tcp端口上开启监听模式socket.accept()块,等待连接机器之间的通信功能socketserver让我们创建一个叫它socket_server.py,输入如下代码:importsocketserver=socket.socket()server.bind(('0.0.0.0',80))server.listen()sock,addr=server.accept()data=""while真:tmp_data=sock.recv(1024)iftmp_data:data+=tmp_data.decode("utf8")else:breakprint('%ssent:%s'%(addr[0],data))sock.close()这里我们创建了一个socket,并将其绑定到地址0.0.0.0:80。这个地址也可以改成我们机器的名字。然后我们开启监听模式,用户连接后,我们开始接受数据(注意:接受数据前需要UTF8解码)。Socket客户端创建socket_server.py之后,我们就可以创建我们的客户端了。让我们创建一个名为socket_client.py的文件并输入以下代码:importsocketclient=socket.socket()client.connect(('127.0.0.1',80))client.send("Hello,Server.".encode("utf8"))client.close()这里只讲下面两个函数,connect和send。我们向连接函数传入了一个元组,当然列表也可以。第一个元素需要是连接的对象ip,第二个是端口。连接完成后,我们使用send函数发送消息。在发送之前,我们需要将内容编码成utf8类型。要向网站发送数据,我们创建一个名为socket_website.py的文件并输入以下代码:importsockets.connect(('www.baidu.com',443))s.send('HELLO'.encode('utf8'))s.close()这里,我们已经向baidu.com发送了数据,因为百度使用的是https协议,所以我们使用的是443端口,如果代码没有报错,则说明发送成功。这时候百度的数据库就会多出一条文本内容数据,叫做HELLO。提示:如果一直使用sockets向网站或机器发送数据,数据过多会导致目标数据库/机器内存满而导致崩溃。这样就实现了简单的传说中的ddos攻击
