码迷,mamicode.com
首页 > 其他好文 > 详细

网络编程

时间:2018-01-25 18:52:49      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:sock   分块   百度网页   end   客户   bin   直接   网络   http   

一 客户端/服务器架构

应用类:qq等应用

web类:百度网页等

c\s架构 和b\s架构,其实b\s 是c\s架构的一种

osi七层,一般来说将5、6、7看为一层

应用层  负责编辑程序等

传输层 选择通信协议tcp/udp

网络层 给上一步的消息加IP信息

数据链路层  给上一步的东西添加mac地址

物理层 通过网线 网卡的物理介质传输东西 给另一台

 

技术分享图片

IP地址可以确认唯一的电脑

端口确定为一个程序

ip+端口 确认唯一机器的唯一程序

可以通过IP地址找到mac地址就是arp协议

建立连接需要三次握手

数据传输需要2次

断开连接需要4次握手

socket层

socket又叫做套接字

套接字是一种具有之前说的通信端点概念的计算机网络数据结构

网络化的程序在开始任何通讯前都必须创建套接字

套接字有两种

一种是文件型应用于同一台电脑上不同程序之间的通讯

另一种是基于网络型的 用于不同电脑

AF_INET是现存的最长用的套接字

套接字地址:主机与端口

合法的端口0~65535

小于1024的端口是系统保留端口,一般用的是8000往上,最熟悉的端口是8080

面向连接, TCP套接字,  指定套接字SOCK_STREAM 整套分块有序传输没有数据边界

无连接  UDP套接字 指定套接字为SOCK_DGRAM 数据宝套接类型的无连接套接字,无需建立连接就可以直接通讯,数据可达顺序,可靠性,不重复性无法保证,数据报是将数据整个发送,无法保证一定可以到达,但是好处是没必要维护虚拟线路等,成本低廉

socket模块函数

tcpsock = socket.socket(socket.AF_INET)  

import socket
tcpsock = socket.socket()
tcpsock.bind((192.168.13.86,8888))
tcpsock.listen()
conn,addr = tcpsock.accept()
userinfo = True
while userinfo !=bey:
    ret = conn.recv(1024).decode(utf-8)
    if ret == bey:
        conn.close()
        break
    print(ret)
    userinfo = input(请输入代码)
    conn.send(bytes(userinfo,encoding=utf-8))
tcpsock.close()


客户端
import socket
tcpsock = socket.socket()
tcpsock.connect((127.0.0.1,8888))
userinfo = True
while userinfo != bey:
    userinfo= input(请输入内容)
    tcpsock.send(bytes(userinfo,encoding=utf-8))
    ret = tcpsock.recv(1024).decode(utf-8)
    if ret == bey:
        tcpsock.send(bbry)
        break
    print(ret)
tcpsock.close()

 

网络编程

标签:sock   分块   百度网页   end   客户   bin   直接   网络   http   

原文地址:https://www.cnblogs.com/Ebola-/p/8352627.html

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