码迷,mamicode.com
首页 > 编程语言 > 详细

python socket编程(初级)

时间:2016-04-10 19:28:28      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:

客户端编程:

  首先要创建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\r\n\r\n                  
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

 

 

    

python socket编程(初级)

标签:

原文地址:http://www.cnblogs.com/114811yayi/p/5374971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!