客户端编程:
首先要创建socket,用python中socket模板中的socket函数就可以了
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
socket函数后面要带两个参数:
Address Family : 可以选择AF_INET(用于Internet进程间通信)或者AF_UNIX(同一台机器间通信)
Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者SOCK_DGRAM(数据报套接字,主要用于 UDP 协议)
我们知道了服务器的IP地址和端口号,我就可以用connect函数连接
s.connect(IP,PORT)
连接上了之后,我们就可以向服务器发送数据了,
message = data # data是你要发送的数据
发送完之后就,我们就要接受数据
reply = s.recv(1024) #1024是一次可以接受的数据大小
最后我们把连接端口就可以了
s.close()
客服端全部的代码如下:
1 #!usr/bin/env python 2 #coding:utf-8 3 4 import socket 5 6 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 7 print 'Socket Created' 8 host = 'www.google.com' 9 port = 80 10 remote_ip = socket.gethostbyname(host) 11 #获取host的IP地址,gethostbyname是在你不知道网页的IP地址的情况下可以获取网址的IP,一般在自己电脑上的时候是不用的 12 print remote_ip 13 s.connect((remote_ip,port)) 14 message = 'GET / HTTP/1.1 ' 15 #这是一个HTTP请求网页内容的命令 16 s.sendall(message) 17 print 'Message send successfully' 18 reply = s.recv(4096) 19 print reply 20 s.close()
服务器和客户端有点不一样
服务器主要做的是:
1. 打开socket;
2.绑定到特定的地址和端口上;
3.监听连接;
4.建立连接;
5.接受或者发送数据
具体代码如下:
#!usr/bin/env python #coding:utf-8 import socket HOST = '127.0.0.1' PORT = 8888 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind((HOST,PORT)) s.listen(5) while True: conn,addr = s.accept() data = conn.recv(1024) conn.sendall('welcome !') print data if data == 'exit': 如果接受的data = exit的话就退出循环 break conn.close() s.close()
这样就差不多了,剩下的就是一些细节方面的问题了. 我一开始写的时候写了好久,照着别人的写总是会出错,关键是别人写的却可以运行,心塞!
主要参考的是:
http://www.cnblogs.com/hazir/p/python_socket_programming.html