python --- socket经典例子

本文介绍了一个简单的socket服务连接示例,包括服务器端与客户端的Python脚本编写过程及运行情况。通过该示例,读者可以了解如何创建并运行一个基本的socket连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例子:使用socket服务进行连接
服务器端ip192.168.1.110,端口7777
客户端ip192.168.1.114,端口7777
先运行服务器端脚本,在运行客户端脚本


服务器端:

root@kali:~/python/socket# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:eb:27:43  
          inet addr:192.168.1.110  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feeb:2743/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:20558 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4842 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8740022 (8.3 MiB)  TX bytes:573244 (559.8 KiB)
          Interrupt:19 Base address:0x2000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:100 errors:0 dropped:0 overruns:0 frame:0
          TX packets:100 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:6000 (5.8 KiB)  TX bytes:6000 (5.8 KiB)

root@kali:~/python/socket# 

root@kali:~/python/socket# pwd
/root/python/socket
root@kali:~/python/socket# ls
socket_server.py
root@kali:~/python/socket# 


代码如下:
root@kali:~/python/socket# vi socket_server.py
root@kali:~/python/socket# cat socket_server.py 
#!/usr/bin/python
# --*-- coding:utf-8 --*--
#服务器端的ip地址192.168.1.110,编写的文件socket_server.py
#客户端的地址ip192.168.1.114,需要编写文件socket_client.py

import socket#导入socket模块

host = ''#''与‘0.0.0.0’表示所有机器都可以连接,'192.168.1.123'连接特定机器
port = 7777#表示启用端口7777,不能使用双引号
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((host,port))#绑定主机与端口
s.listen(2)#启用两个监听2进程
conn, addr = s.accept()#地址接收所有的连接

#--------以上代码为socket server端-------------

print 'Got connection from:' , addr#打印连接地址
while 1:#为死循环,如果不使用while循环的话,就执行一次就退出
    data = conn.recv(4096)#一次性可以连接4096字节
    if not data:break#没有接收任何数据就break连接
    conn.sendall(data)#如果有数据就全部回显
    #conn.sendall(data.upper())#如果有数据就全部回显,并且把回显的字母全部变成大写字母
conn.close()#如果break话,就关闭会话


服务器运行:
root@kali:~/python/socket# python socket_server.py
Got connection from: ('192.168.1.114', 46451)

客户端:

root@kali:~/python/socket# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:ed:db:6f  
          inet addr:192.168.1.114  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feed:db6f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19959 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4188 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:9832363 (9.3 MiB)  TX bytes:451329 (440.7 KiB)
          Interrupt:19 Base address:0x2000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:96 errors:0 dropped:0 overruns:0 frame:0
          TX packets:96 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:5760 (5.6 KiB)  TX bytes:5760 (5.6 KiB)

root@kali:~/python/socket# 

root@kali:~/python/socket# pwd
/root/python/socket
root@kali:~/python/socket# ls
socket_client.py
root@kali:~/python/socket# 


代码如下:
root@kali:~/python/socket# vi socket_client.py
root@kali:~/python/socket# cat socket_client.py
#!/usr/bin/python
# --*-- coding:utf-8 --*--
#客户端的地址ip192.168.1.114,编写文件为socket_client.py

import socket#导入socket模块

host = '192.168.1.110'#服务器端的ip地址
port = 7777#服务器端的端口
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#启用ipv4的tcp/ip协议与类型
s.connect((host,port))#连接服务器端的主机与端口

#--------以上为客户端的代码信息-------------

#--------以下为客户端发送一次性的信息,有while 1:才是死循环发送信息-----

s.sendall('hello world!!')#客户端发送的信息
data = s.recv(4096)#服务器端返回信息就赋值给data
s.close()#不返回信息就断开连接
print 'received',repr(data)#打印返回的信息


客户端运行:
root@kali:~/python/socket# python socket_client.py
received 'hello world!!'


-----------------------------------------------------
服务器端启用:
    conn.sendall(data.upper())#如果有数据就全部回显,并且把回显的字母全部变成大写字母
客户端运行脚本:
root@kali:~/python/socket# 
root@kali:~/python/socket# python socket_client.py
received 'HELLO WORLD!!'
root@kali:~/python/socket# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐为波

看着给就好了,学习写作有点累!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值