最近巩固下python语言,说真的,使用了这么多脚本语言,还是这门比较好玩点,快速,简洁,容易上手更不用说了。

   socket 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象。socket是允许发送和接受数据。建立通信通道,网络通信的每个端点拥有一个套接字对象为前提。

   python socket 这就是python的一个模块,至于怎么使用这个模块,大家可以查看 以下的网址,里面的python资料都很全的。http://docs.python.org/2/library/socket.html(英文的,不过大家可以大概看下,然后看实例就懂得了,很容易)


  以下写的代码还是不够完美,哪位高手路过的,请多指点,上代码...............


1 服务器端

[root@localhost ~]# cat server.py
#coding:utf8
import time
import sys
import socket
import select
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1',8989))#绑定IP和端口
server.listen(10) #侦听
input = [server,sys.stdin]#sys.stdin是标准输入,从键盘输入
print '请等待连接,亲!耐心点......'
client,address = server.accept()#获取到客户和IP地址
print "连接的是:",address
input.append(client)#添加客户端到imput列表
Ture = 1#定义一个死循环
while Ture:
    print"请输入聊天的话题,亲>>>>>:"
    input_data,out_data,except_data = select.select(input,[],[])#利用select对所有输入的数据进行监视
    for receive_data in input_data:#这里就是循环输入,但这里要有两种方式   
       if receive_data == sys.stdin: #这个是处理标准输入,也就是服务器的使用键盘输入
           data = raw_input()
           if data == '^c':
               running = 0
               client.send(data) #发送到客户端
               client.close()
               break
           client.send("发送时间: %s:\n%s"%(time.ctime(),data))
       else:#这个就是接收socket的输入
           data = receive_data.recv(1024)
           print "<客户端发送的信息>",data
                                                                                                                                                                                                                  
server.close()


2  客户端

 

[root@localhost ~]# cat clien.py
#coding:utf8
import time
import sys
import select
import socket
address = ('127.0.0.1',8989)
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(address)
input = [client,sys.stdin]
Ture = 1
while Ture:
   print '请输入聊天的话题,亲>>>>>:'
   input_data,oupt_data,except_data = select.select(input,[],[])
                                                                                                                                                                          
   for receive_data in input_data:
       if receive_data == client:
           data = client.recv(1024)
           if data == '^c':
               running = 0
               print 'server exist'
               receive_data.close()
               print 'client is over'
               break
           print "<服务器发送的信息>",data
       else:
           client_data = raw_input()
           client.send("发送时间: %s:\n%s"%(time.ctime(),client_data))
client.close()


3  测试!!!

  服务器端执行:

 

[root@localhost ~]# python server.py
请等待连接,亲!耐心点......

 

  客户端执行:

 

[root@localhost ~]# python clien.py
请输入聊天的话题,亲>>>>>:


4 服务器端和客户端聊天对话测试:

 

客户端发起对话连接:
[root@localhost ~]# python clien.py
请输入聊天的话题,亲>>>>>:
测试socket功能是否正常使用,请回答?
请输入聊天的话题,亲>>>>>:
服务器端口接收信息:
[root@localhost ~]# python server.py
请等待连接,亲!耐心点......
连接的是: ('127.0.0.1', 33371)
请输入聊天的话题,亲>>>>>:
<客户端发送的信息> 发送时间: Wed Jul 24 09:13:48 2013:
测试socket功能是否正常使用,请回答?
请输入聊天的话题,亲>>>>>:

 

 

服务器端发送信息:
[root@localhost ~]# python server.py
请等待连接,亲!耐心点......
连接的是: ('127.0.0.1', 33371)
请输入聊天的话题,亲>>>>>:
<客户端发送的信息> 发送时间: Wed Jul 24 09:13:48 2013:
测试socket功能是否正常使用,请回答?
请输入聊天的话题,亲>>>>>:
测试是成功的,不过代码还是得优化,功能还需要添加,收到没?
请输入聊天的话题,亲>>>>>:
客户端接收信息:
[root@localhost ~]# python clien.py
请输入聊天的话题,亲>>>>>:
测试socket功能是否正常使用,请回答?
请输入聊天的话题,亲>>>>>:
<服务器发送的信息> 发送时间: Wed Jul 24 09:21:15 2013:
测试是成功的,不过代码还是得优化,功能还需要添加,收到没?
请输入聊天的话题,亲>>>>>:


  由于本人水平有限,代码写的不是很完美,下次有时间写一个像QQ界面的通讯软件.