From:http://blog.csdn.net/rebelqsp/article/details/22109925
参考:http://www.cnblogs.com/hnrainll/archive/2012/10/25/2738094.html
1、Socket 类型
2、Socket 函数
3、socket编程思路
4、Socket编程之服务端代码:
server端的socket一般流程是这样:
- 建立一个socket(可以选择socket类型INET,UNIX等,以及连接方式TCP/UDP)
- 使用bind公开一个端口,使得client可以方便连接
- 设置一个listen队列的大小
- 进入一个无限循环,在此无限循环中,使用accept函数来等待客户连接,此函数返回一个新的socket, 对应于客户端的socket,建立通信信道。对socket的处理一般放在外部单独的函数中(并发)
- 通过send()/recv()来对socket进行读写操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
root@yangrong: / python # catday5-socket-server.py
#!/usr/bin/python
import socket #socket模块
import commands #执行系统命令模块
HOST = '10.0.0.245'
PORT = 50007
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #定义socket类型,网络通信,TCP
s.bind((HOST,PORT)) #套接字绑定的IP与端口
s.listen( 1 ) #开始TCP监听
while 1 :
conn,addr = s.accept() #接受TCP连接,并返回新的套接字与IP地址
print 'Connected by' ,addr #输出客户端的IP地址
while 1 :
data = conn.recv( 1024 ) #把接收的数据实例化
cmd_status,cmd_result = commands.getstatusoutput(data) #commands.getstatusoutput执行系统命令(即shell命令),返回两个结果,第一个是状态,成功则为0,第二个是执行成功或失败的输出信息
if len (cmd_result.strip()) = = 0 : #如果输出结果长度为0,则告诉客户端完成。此用法针对于创建文件或目录,创建成功不会有输出信息
conn.sendall( 'Done.' )
else :
conn.sendall(cmd_result) #否则就把结果发给对端(即客户端)
conn.close() #关闭连接
|
5、Socket编程之客户端代码:
- 建立一个新的socket
- 使用connect函数与远程主机获得连接
- 在此socket上进行I/O操作
1
2
3
4
5
6
7
8
9
10
11
12
13
|
root@yangrong: / python # catday5-socket-client.py
#!/usr/bin/python
import socket
HOST = '10.0.0.245'
PORT = 50007
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #定义socket类型,网络通信,TCP
s.connect((HOST,PORT)) #要连接的IP与端口
while 1 :
cmd = raw_input ( "Please input cmd:" ) #与人交互,输入命令
s.sendall(cmd) #把命令发送给对端
data = s.recv( 1024 ) #把接收的数据定义为变量
print data #输出变量
s.close() #关闭连接
|
-
顶
- 12
-
踩