网络编程-socket

网络编程之socket

一、为什么要学习socket

  首先我们python基础部分已经学完,而socket是我们基础进阶的课程,也就是说,你已经可以写一点小程序了,socket就是网络通信的工具,任何一门语言都有socket,他不是任何语言的专有名词,而是大家通过自己的程序与其他电脑进行联系并发送消息或者文件等操作就叫网络通信

 

二、客户端\服务端架构

客户端:安装在你电脑上的qq、浏览器,当我们使用qq发送消息的时候,消息先发送到了腾讯,然后腾讯转发到你朋友的qq上,此时你的qq就是客户端,腾讯就是服务端。

a、硬件C\S架构:打印机

b、软件C\S架构:qq,微信,优酷等

多网站是基于浏览器访问的,浏览器和各个网站服务端进行通讯方式又被称为B\S架构

三、socket

import socket
#创建一个socket对象
server = socket.socket()#相当于创建了一部电话
ip_port = ('192.168.111.1',8001)#创建一个电话
server.listen(5)#监听着电话,能监听5个
print('111')#等着别人给我打电话,打来电话的时候,我就拿到了和对方的这个连线通道conn和对方的电话号码addr
conn,addr = server.accept()#阻塞住,一直等到有人链接我,链接之后得到一个元祖,里面是连线通道conn和对方的地址
print('222')
print(conn)

print('>>>>>>>>>',addr)
while True:
    from_client_data = conn.recv(1024) #服务端必须通过两者之间的连接通道来收消息
    from_client_data = from_client_data.decode('utf-8')
    print(from_client_data)
    if from_client_data == 'bye':
        break
    server_input = input('明威说>>>>:')
    conn.send(server_input.encode('utf-8'))
    if server_input == 'bye':
        break
conn.close() #挂电话
server.close() #关手机
import socket
import time

client = socket.socket()
server_ip_port = ('192.168.111.1',8001)

client.connect(server_ip_port)

while True:
    client_input = input('小文说>>>>:')
    client.send(client_input.encode('utf-8')) #给服务端发送消息
    if client_input == 'bye':
        break
    from_server_data = client.recv(1024)

    print('来自服务端的消息:',from_server_data.decode('utf-8'))
    if from_server_data.decode('utf-8') == 'bye':
        break
client.close() #客户端挂电话

 注意:先运行server,然后再运行client

posted @ 2018-11-22 15:29  DanielYang11  阅读(123)  评论(0编辑  收藏  举报