python --- socket服务器与客户端各种状态案例

=======客户端请求一次成功后,服务器一直处于获取客户端的死循环中=======

服务器端:

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

客户短端:

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

服务器端代码与运行:

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

import socket#导入socket模块
import time#导入时间模块

host = ''#''与‘0.0.0.0’表示所有机器都可以连接,'192.168.72.130'连接特定机器
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端-------------
while 1:#会出现客户端请求完成后,服务器端一直没有中断,使服务器处于死循环中
    print 'Got connection from:' , addr#打印连接地址
    #while 1:#为死循环,如果不使用while循环的话,就执行一次就退出
    data = conn.recv(4096)#一次性可以连接4096字节
    print 'get data',data#打印客户端请求的数据
    if not data:#如果没有收到客户端数据就继续接收
        time.sleep(1.5)#每次暂停1.5秒
        continue
    #if not data:break#没有接收任何数据就break连接
    #conn.sendall(data)#如果有数据就全部原样回显
    conn.sendall(data.upper())#如果有数据就全部回显,并且把回显的字母全部变成大写字母
conn.close()#如果break话,就关闭会话


代码运行:服务器端接收一次客户端数据成功后,就处于死循环中
root@kali:~/python/socket# python socket_server_using.py 
Got connection from: ('192.168.72.130', 49860)
get data hello world!!
Got connection from: ('192.168.72.130', 49860)
get data 
Got connection from: ('192.168.72.130', 49860)
get data 
Got connection from: ('192.168.72.130', 49860)
get data 
Got connection from: ('192.168.72.130', 49860)
get data 
Got connection from: ('192.168.72.130', 49860)
get data 
Got connection from: ('192.168.72.130', 49860)
get data 
Got connection from: ('192.168.72.130', 49860)
get data 
Got connection from: ('192.168.72.130', 49860)
get data 
^CTraceback (most recent call last):
  File "socket_server_using.py", line 23, in <module>
    time.sleep(1.5)#每次暂停1.5秒
KeyboardInterrupt

客户端代码与运行:

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

import socket#导入socket模块

host = '192.168.72.129'#服务器端的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# vi socket_client_using.py 
root@kali:~/python/socket# python  socket_client_using.py 
received 'HELLO WORLD!!'

===============================================

++++++++客户端请求一次,服务器端获取一次信息++++++++++++++
服务器端:

root@kali:~/python/socket# ls
socket_server_ok.py  socket_server.py  socket_server_using.py
root@kali:~/python/socket# clear
root@kali:~/python/socket# vi socket_server_ok.py 
root@kali:~/python/socket# cat socket_server_ok.py

客户端:

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

服务器端代码与运行:

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

import socket#导入socket模块
import time

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

while 1:#每次服务器重新获取客户端的请求
    conn, addr = s.accept()#地址接收所有的连接

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

    #while 1:#会出现客户端请求完成后,服务器端一直没有中断,使服务器处于死循环中
    print 'Got connection from:' , addr#打印连接地址
    #while 1:#为死循环,如果不使用while循环的话,就执行一次就退出
    data = conn.recv(4096)#一次性可以连接4096字节
    print 'get data',data#打印客户端请求的数据
    if not data:#如果没有收到客户端数据就继续接收
        time.sleep(1.5)#每次暂停1.5秒
        continue
    #if not data:break#没有接收任何数据就break连接
    #conn.sendall(data)#如果有数据就全部原样回显
    conn.sendall(data.upper())#如果有数据就全部回显,并且把回显的字母全部变成大写字母
conn.close()#如果break话,就关闭会话

服务器端返回4次信息:
root@kali:~/python/socket# python socket_server_ok.py 
Got connection from: ('192.168.72.130', 49867)
get data hello world!!
Got connection from: ('192.168.72.130', 49868)
get data hello world!!
Got connection from: ('192.168.72.130', 49869)
get data hello world!!
Got connection from: ('192.168.72.130', 49870)
get data hello world!!

客户端代码与运行:

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

import socket#导入socket模块

host = '192.168.72.129'#服务器端的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)#打印返回的信息


客户端请求4次:
root@kali:~/python/socket# python socket_client_ok.py 
received 'HELLO WORLD!!'
root@kali:~/python/socket# python socket_client_ok.py 
received 'HELLO WORLD!!'
root@kali:~/python/socket# python socket_client_ok.py 
received 'HELLO WORLD!!'
root@kali:~/python/socket# python socket_client_ok.py 
received 'HELLO WORLD!!'

+++++++++++++++++++++++++++++++++++++++++++

*%%%%%%%%单线程的客户端与服务器实现长连接(一直有数据进行通信)%%%%%%%%%%*
客户端:

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

服务器端:

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

服务器端代码与运行:

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

import socket#导入socket模块
import time

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

while 1:#每次服务器重新获取客户端的请求
    conn, addr = s.accept()#地址接收所有的连接

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

    #while 1:#会出现客户端请求完成后,服务器端一直没有中断,使服务器处于死循环中
    print 'Got connection from:' , addr#打印连接地址

    #下面的while使用是单线程处理的,客户端可以长连接服务器端
    while 1:#为死循环,如果不使用while循环的话,就执行一次就退出
        data = conn.recv(4096)#一次性可以连接4096字节
        print 'get data',data#打印客户端请求的数据
        if not data:#如果没有收到客户端数据就继续接收
            time.sleep(1.5)#每次暂停1.5秒
            continue
    #if not data:break#没有接收任何数据就break连接
    #conn.sendall(data)#如果有数据就全部原样回显
        conn.sendall(data.upper())#如果有数据就全部回显,并且把回显的字母全部变成大写字母
conn.close()#如果break话,就关闭会话

root@kali:~/python/socket# python socket_server_ok.py

服务器运行:

root@kali:~/python/socket# python socket_server_ok.py 
Got connection from: ('192.168.72.130', 49949)
get data hello world!!
get data hello world!!
get data hello world!!
get data hello world!!
get data hello world!!
get data hello world!!
get data hello world!!
get data hello world!!
get data hello world!!
get data hello world!!
get data hello world!!
get data hello world!!
^CTraceback (most recent call last):
  File "socket_server_ok.py", line 25, in <module>
    data = conn.recv(4096)#一次性可以连接4096字节
KeyboardInterrupt
root@kali:~/python/socket#
 ```

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

import socket#导入socket模块
from time import sleep#导入时间模块,并使用sleep功能

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

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

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

while 1:#使客户端暂停1.5秒后循环发送信息,给服务器端
    s.sendall('hello world!!')#客户端发送的信息
    data = s.recv(4096)#服务器端返回信息就赋值给data
    sleep(1.5)#每次暂停1.5秒

#s.close()#不返回信息就断开连接
    print 'received',repr(data)#打印返回的信息
s.close()#不返回信息就断开连接

root@kali:~/python/socket# 
root@kali:~/python/socket# ls
socket_client_ok.py  socket_client.py  socket_client_using.py
root@kali:~/python/socket# pwd
/root/python/socket
root@kali:~/python/socket# python socket_client_ok.py 
received 'HELLO WORLD!!'
received 'HELLO WORLD!!'
received 'HELLO WORLD!!'
received 'HELLO WORLD!!'
received 'HELLO WORLD!!'
received 'HELLO WORLD!!'
received 'HELLO WORLD!!'
received 'HELLO WORLD!!'
received 'HELLO WORLD!!'
received 'HELLO WORLD!!'
received 'HELLO WORLD!!'
received 'HELLO WORLD!!'
^CTraceback (most recent call last):
  File "socket_client_ok.py", line 20, in <module>
    sleep(1.5)#每次暂停1.5秒
KeyboardInterrupt

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

######在客户端执行命令,只在服务器端显示执行结果##########
服务器端:

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


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

import socket#导入socket模块
import time#导入时间模块
import os#导入系统模块

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

conn, addr = s.accept()#地址接收所有的连接

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

#使用服务器端执行系统的命令
while 1:#为死循环,如果不使用while循环的话,就执行一次就退出
        data = conn.recv(4096)#一次性可以连接4096字节
        print 'get data',data#打印客户端请求的数据
        if not data:#如果没有收到客户端数据就继续接收
            time.sleep(1.5)#每次暂停1.5秒
        os.system(data)#让服务器执行系统的命令
        conn.sendall(data.upper())#如果有数据就全部回显,并且把回显的字母全部变成大写字母
conn.close()#如果break话,就关闭会话



root@kali:~/python/socket# python socket_server_ok.py 
get data ls
socket_server_ok.py  socket_server.py  socket_server_using.py
get data df
文件系统                                                  1K-块    已用    可用 已用% 挂载点
rootfs                                                 19620732 8713432 9887552   47% /
udev                                                      10240       0   10240    0% /dev
tmpfs                                                    110880     568  110312    1% /run
/dev/disk/by-uuid/1d69c4b7-8825-4a6e-a4a4-e1ef94f2d30f 19620732 8713432 9887552   47% /
tmpfs                                                      5120       0    5120    0% /run/lock
tmpfs                                                    401980      76  401904    1% /run/shm

客户端:

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


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

import socket#导入socket模块
from time import sleep#导入时间模块,并使用sleep功能

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

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

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

while 1:#一直等待客户端输入命令给服务器端
    input = raw_input('please input system command:')#输入要使用的系统命令
    s.send(input)#客户端发送的信息
    data = s.recv(4096)#服务器端返回信息就赋值给data

    print 'received from server:',data#打印返回的信息
s.close()#不返回信息就断开连接




root@kali:~/python/socket# python socket_client_ok.py 
please input system command:ls
received from server: LS
please input system command:df
received from server: DF
please input system command:

在服务器端,把端口7777的进程结束掉:

root@kali:~/python/socket# netstat -an | grep 7777
tcp        0      0 0.0.0.0:7777            0.0.0.0:*               LISTEN     
tcp        0      0 192.168.72.129:7777     192.168.72.130:49992    CLOSE_WAIT 
root@kali:~/python/socket# lsof -i :7777
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  10869 root    3u  IPv4  36055      0t0  TCP *:7777 (LISTEN)
python  10869 root    4u  IPv4  36057      0t0  TCP 192.168.72.129:7777->192.168.72.130:49992 (CLOSE_WAIT)
root@kali:~/python/socket# kill -9 10869
[1]+  Killed                  python socket_server_ok.py
root@kali:~/python/socket# netstat -an | grep 7777
root@kali:~/python/socket# 

############################################

&&&&&&&&&在客户端执行命令,在客户端显示执行结果&&&&&&&&&&
该功能相当于单线程的简单SSH工具

服务器端:

结束占有7777端口的进程,重新使用7777的端口

root@kali:~/python/socket# clear
root@kali:~/python/socket# netstat -an | grep 7777
tcp        0      0 0.0.0.0:7777            0.0.0.0:*               LISTEN     
tcp        0      0 192.168.72.129:7777     192.168.72.130:49999    CLOSE_WAIT 
root@kali:~/python/socket# lsof -i :7777
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python  10913 root    3u  IPv4  38492      0t0  TCP *:7777 (LISTEN)
python  10913 root    4u  IPv4  38494      0t0  TCP 192.168.72.129:7777->192.168.72.130:49999 (CLOSE_WAIT)
root@kali:~/python/socket# kill -9 10913
[1]+  Killed                  python socket_server_ok.py
root@kali:~/python/socket# netstat -an | grep 7777


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


root@kali:~/python/socket# cat tab.py 
#pyhton startup file
import sys
import readline
import rlcompleter
import atexit
import os
#tab completion
readline.parse_and_bind('tab:complete')
#history file
histfile = os.path.join(os.environ['HOME'],'.pythonhistory')
try:
    readline.read_history_file(histfile)
except IOError:
    pass
atexit.register(readline.write_history_file,histfile)

del os, histfile, readline, rlcompleter
root@kali:~/python/socket# 



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

import socket#导入socket模块
import time#导入时间模块
import os#导入系统模块
import tab#导入换行

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

conn, addr = s.accept()#地址接收所有的连接

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

#使用服务器端执行系统的命令
while 1:#为死循环,如果不使用while循环的话,就执行一次就退出
        data = conn.recv(4096)#一次性可以连接4096字节
        print 'get data',data#打印客户端请求的数据
        if not data:#如果没有收到客户端数据就继续接收
            time.sleep(1.5)#每次暂停1.5秒
        #os.system(data)#让服务器执行系统的命令
        cmd = os.popen(data)#让服务器执行系统的命令,并回显到客户端
        result = cmd.read()#回显结果
        conn.sendall(result)#给客户端返回信息
        print result#服务器端打印回显结果
        #conn.sendall(data.upper())#如果有数据就全部回显,并且把回显的字母全部变成大写字母
conn.close()#如果break话,就关闭会话
root@kali:~/python/socket# 


root@kali:~/python/socket# python socket_server_ok.py 
get data ls
get data ls -la
get data pwd
get data df

客户端:

root@kali:~/python/socket# clear
root@kali:~/python/socket# pwd
/root/python/socket
root@kali:~/python/socket# ls
socket_server_ok.py  socket_server.py  socket_server_using.py  tab.py
root@kali:~/python/socket# 


root@kali:~/python/socket# cat tab.py 
#pyhton startup file
import sys
import readline
import rlcompleter
import atexit
import os
#tab completion
readline.parse_and_bind('tab:complete')
#history file
histfile = os.path.join(os.environ['HOME'],'.pythonhistory')
try:
    readline.read_history_file(histfile)
except IOError:
    pass
atexit.register(readline.write_history_file,histfile)

del os, histfile, readline, rlcompleter
root@kali:~/python/socket# 


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

import socket#导入socket模块
import tab#导入换行
from time import sleep#导入时间模块,并使用sleep功能

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

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

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

while 1:#一直等待客户端输入命令给服务器端
    input = raw_input('please input system command:')#输入要使用的系统命令
    s.send(input)#客户端发送的信息
    data = s.recv(4096)#服务器端返回信息就赋值给data,如果返回的字节小于服务器端的4096字节话,会分几次发送,发到4096字节就算完成

    print 'received from server:',data#打印返回的信息
s.close()#不返回信息就断开连接



root@kali:~/python/socket# python socket_client_ok.py 
please input system command:ls
received from server: socket_server_ok.py
socket_server.py
socket_server_using.py

please input system command:ls -la
received from server: 总用量 20
drwxr-xr-x  2 root root 4096  624 17:05 .
drwxr-xr-x 11 root root 4096  621 20:57 ..
-rw-r--r--  1 root root 1448  6月 24 17:05 socket_server_ok.py
-rw-r--r--  1 root root 1082  6月 22 23:31 socket_server.py
-rw-r--r--  1 root root 1374  6月 24 13:21 socket_server_using.py

please input system command:pwd
received from server: /root/python/socket

please input system command:df
received from server: 文件系统                                                  1K-块    已用    可用 已用% 挂载点
rootfs                                                 19620732 8713508 9887476   47% /
udev                                                      10240       0   10240    0% /dev
tmpfs                                                    110880     568  110312    1% /run
/dev/disk/by-uuid/1d69c4b7-8825-4a6e-a4a4-e1ef94f2d30f 19620732 8713508 9887476   47% /
tmpfs                                                      5120       0    5120    0% /run/lock
tmpfs                                                    401980      76  401904    1% /run/shm

please input system command:
root@kali:~/python/socket# python socket_client_ok.py 
please input system command:top - bn 1
received from server: top - 17:40:10 up  4:41,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 137 total,   1 running, 135 sleeping,   0 stopped,   1 zombie
%Cpu(s):  2.0 us,  0.3 sy,  0.0 ni, 96.9 id,  0.9 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   1108800 total,   626184 used,   482616 free,    40484 buffers
KiB Swap:   901116 total,        0 used,   901116 free,   374004 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
    1 root      20   0  2312 1516 1416 S   0.0  0.1   0:01.29 init
    2 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kthreadd
    3 root      20   0     0    0    0 S   0.0  0.0   0:01.56 ksoftirqd/0
    5 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/0:0H
    7 root      20   0     0    0    0 S   0.0  0.0   0:03.19 rcu_sched
    8 root      20   0     0    0    0 S   0.0  0.0   0:00.00 rcu_bh
    9 root      rt   0     0    0    0 S   0.0  0.0   0:00.28 migration/0
   10 root      rt   0     0    0    0 S   0.0  0.0   0:00.09 watchdog/0
   11 root      rt   0     0    0    0 S   0.0  0.0   0:00.13 watchdog/1
   12 root      rt   0     0    0    0 S   0.0  0.0   0:00.49 migration/1
   13 root      20   0     0    0    0 S   0.0  0.0   0:00.77 ksoftirqd/1
   15 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/1:0H
   16 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 khelper
   17 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kdevtmpfs
   18 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 netns
   19 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 perf
   20 root      20   0     0    0    0 S   0.0  0.0   0:00.00 khungtaskd
   21 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 writeback
   22 root      25   5     0    0    0 S   0.0  0.0   0:00.00 ksmd
   23 root      39  19     0    0    0 S   0.0  0.0   0:00.00 khugepaged
   25 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 crypto
   26 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kintegrityd
   27 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 bioset
   28 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kblockd
   29 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 devfreq_wq
   31 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kswapd0
   32 root      20   0     0    0    0 S   0.0  0.0   0:00.00 fsnotify_mark
   39 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kthrotld
   40 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 ipv6_addrconf
   41 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 deferwq
   96 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 mpt_poll_0
  113 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 ata_sff
  114 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 mpt/0
  448 root      20   0     0    0    0 S   0.0  0.0   0:00.00 scsi_eh_0
  449 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 scsi_tmf_0
  450 root      20   0     0    0    0 S   0.0  0.0   0:00.01 scsi_eh_1
  452 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 scsi_tmf_1
  453 root      20   0     0    0    0 S   0.0  0.0   0:01.29 scsi_eh_2
  454 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 scsi_tmf_2
  466 root       0 -20     0    0    0 S   0.0  0.0   0:00.46 kworker/0:1H
  472 root       0 -20     0    0    0 S   0.0  0.0   0:00.76 kworker/1:1H
  509 root      20   0     0    0    0 S   0.0  0.0   0:00.13 jbd2/sda1-8
  510 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 ext4-rsv-conver
  657 root      20   0  3084 2672 1804 S   0.0  0.2   0:00.09 udevd
 1080 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kpsmoused
 1096 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 ttm_swap
 1097 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/u5:0
 1098 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 hci0
 1099 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 hci0
 1101 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/u5:2
 1530 root      20   0  3072 2432 1568 S   0.0  0.2   0:00.00 udevd
 1
please input system command:

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
当涉及到使用 Pythonsocket 模块进行多线程编程时,我们可以创建一个服务器,该服务器可以同时处理多个客户端的连接请求。下面是一个简单的示例代码: ```python import socket import threading def handle_client(client_socket): # 处理客户端请求的函数 request = client_socket.recv(1024) # 接收客户端发送的数据 response = "Hello, client!" # 处理客户端请求,并生成响应数据 client_socket.send(response.encode()) # 发送响应数据给客户端 client_socket.close() # 关闭客户端连接 def main(): # 创建服务器套接字 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('127.0.0.1', 8888)) # 绑定服务器地址和端口 server_socket.listen(5) # 监听客户端连接请求 print("Server started. Listening on port 8888...") while True: client_socket, client_address = server_socket.accept() # 接受客户端连接请求 print("Accepted connection from {}:{}".format(client_address[0], client_address[1])) # 创建新线程来处理客户端请求 client_thread = threading.Thread(target=handle_client, args=(client_socket,)) client_thread.start() if __name__ == '__main__': main() ``` 在这个例子中,我们首先创建了一个 `handle_client` 函数来处理客户端请求。然后,在 `main` 函数中,我们创建了一个服务器套接字,并绑定到本地地址和端口。接着,我们使用一个循环来接收客户端的连接请求。每当有新的连接请求到达时,我们创建一个新的线程来处理该客户端的请求,并继续监听其他客户端的连接请求。 需要注意的是,这只是一个简单的示例,实际中可能需要更多的错误处理和线程管理机制。另外,由于涉及到多线程编程,还需要注意线程安全性和资源共享的问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

徐为波

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

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

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

打赏作者

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

抵扣说明:

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

余额充值