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

Python中的socket

时间:2018-07-06 22:25:35      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:请求   3.4   client   type   握手   udp   ram   strip()   .so   

 

socket()模块函数用法

import
socket socket.socket(socket_family,socket_type,protocal=0) socket_family 可以是 AF_UNIX 或 AF_INET。socket_type 可以是 SOCK_STREAM 或 SOCK_DGRAM。protocol 一般不填,默认值为 0。 获取tcp/ip套接字 tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 获取udp/ip套接字 udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 由于 socket 模块中有太多的属性。我们在这里破例使用了from module import *语句。使用 from socket import *,我们就把 socket 模块里的所有属性都带到我们的命名空间里了,这样能 大幅减短我们的代码。 例如tcpSock = socket(AF_INET, SOCK_STREAM)

 

 

socket通信流程与打电话流程类似,我们就以打电话为例来实现一个low版的套接字通信

服务端:

import socket

#1、买手机
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #tcp称为流式协议,udp称为数据报协议SOCK_DGRAM
# print(phone)

#2、插入/绑定手机卡
# phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
phone.bind((127.0.0.1,8082))

#3、开机
phone.listen(5) # 半连接池,限制的是请求数

#4、等待电话连接
print(start....)
conn,client_addr=phone.accept() #(三次握手建立的双向连接,(客户端的ip,端口))
# print(conn)
print(client_addr)

#5、通信:收\发消息
while True: # 通信循环
    data=conn.recv(1024) #最大接收的字节数
    print(来自客户端的数据,data)
    conn.send(data.upper())

#6、挂掉电话连接
conn.close()

#7、关机
phone.close()

客户端:

import socket

#1、买手机
phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print(phone)
#2、拨电话
phone.connect((192.168.13.45,8080)) # 指定服务端ip和端口

#3、通信:发\收消息
while True:
    msg=input(>>>:).strip()
    phone.send(msg.encode(utf-8))
    # phone.send(bytes(‘hello‘,encoding=‘utf-8‘))
    data=phone.recv(1024)
    print(data)

#4、关闭
phone.close()

 

Python中的socket

标签:请求   3.4   client   type   握手   udp   ram   strip()   .so   

原文地址:https://www.cnblogs.com/huyingsakai/p/9275616.html

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