网络编程

1.cs构架     服务端客户端架构

    软件cs构架:京东, 淘宝, qq, 微信, 暴风影音, 快播

    硬件架构:打印机

    服务端:提供服务的

    客户端:享受服务的

    BS架构:浏览器和服务端,谷歌, 360, IE

2.网络通信当中遇到的名词,硬件

  网卡:接收电信号

  mac地址:网卡的唯一标识,全球唯一,6位点分16进制

  广播:信息发给所有人

  单播:单独发个某人或者说某个设备

  广播风暴:不安全,容易拥堵网络

  IP地址:划分广播域

      192.168.15.113四个点分十进制

  集线器:将所有电脑连通起来

  交换机:升级版集线器

  DHCP协议:自动分ip地址

  划分广播域-->ip网段:192.168.15.0---192.168.15.255属于同一子网

            192.168.16.0---192.168.16.255

  子网掩码:计算机目标ip地址是否和咱们同一网段

    同一网段的:广播发送

    不同网段的:发送给路由器

  路由器(内网的作用):管理局域网

 

  找外部网路的设备:

    域名:www.jd.com --->ip地址  

    DNS服务器:记录着所有的域名和他网站对应的那台服务器的IP地址的对应关系,理解唯一个字典

    {"www.jd.com":192.168.15.12}

  

    网关:在路由器这,把关你对外的请求

    NAT技术:将你的ip地址,转为网关的ip地址

    外网又称为公网,网关的ip地址又称为外网ip地址或者公网ip地址

    

    路由器(外网的作用):转发消息

    路由协议:计算一个最优路径,然后进行路由转发

    发到京东的路由器上,京东的路由器做了端口映射

    端口:标识电脑上某个应用程序,范围0-65535      0-1024内部程序用的,我们一般使用的都是8000以后

    通过IP地址+端口:我就能唯一确定一台电脑上的某个程序

 

3 socket

 服务端:

import socket

#创建了一个socket对象
server = socket.socket() #创建一个手机
ip_port = ('192.168.15.113',8001) #创建了一张电话卡
#绑定IP地址和端口
server.bind(ip_port) #插上电话卡
#监听IP地址和端口
server.listen(3) #开机,后面等待链接的客户端个数为3个
print(11111)
#等待客户端的链接
conn, addr = server.accept() #等着别人给我打电话,阻塞住

while True:
#接收消息
from_client_msg = conn.recv(1024) #1024为消息大小,单位B,MB = 1024KB,1KB = 1024B
#接收的消息是bytes类型,需要转换为字符串
from_client_msg = from_client_msg.decode('utf-8')
print(from_client_msg)
msg = input('瑞鑫说:')
conn.send(msg.encode('utf-8'))
#关闭链接
conn.close()
server.close()

# print(conn)
# print('>>>>',addr)


客户端:import socketclient = socket.socket()


server_ip_port = ('192.168.15.105',8888)

#链接服务端
client.connect(server_ip_port)

while True:
msg = input('小虬哥想说:')
print('22222')
#发消息
client.send(msg.encode('utf-8')) #send里面的消息必须是字节类型的

from_server_msg = client.recv(1024) #阻塞住,等待接收消息
from_server_msg = from_server_msg.decode('utf-8')
print(from_server_msg)

client.close()

4.网络通信协议
  osi七层,tcp\ip五层
  tcp\ip五层
    arg协议:通过IP地址找到mac地址

tcp和udp的区别
  tcp协议:面向连接.消息可靠,相对udp来讲,传输速度慢,消息是面向流的,无消息保护边界.
  udp协议:面向无连接,消息不可靠,传输速度快,消息面向包的,有消息保护边界

  tcp代码和udp代码:
  udp服务端:
import socket

#创建一个udp协议下的socket,需要使用参数type
udp_server = socket.socket(type=socket.SOCK_DGRAM) #DGRAM : datagram 数据报
#拿到一个地址,启动程序的时候,告诉电脑,你给我这个程序分配8001端口.
ip_port = ('192.168.15.113',8001)
#绑定IP地址和端口
udp_server.bind(ip_port)

print('准备接收消息了...')
#接收消息,from_client_msg来自客户端的消息,client_addr客户端的地址('192.168.15.113', 8001)
from_client_msg,client_addr = udp_server.recvfrom(1024) #阻塞住了
print(11111)
print(from_client_msg)
print(client_addr)
#发送消息
udp_server.sendto(b'gunduzi',client_addr)
#关闭udp的socket对象
udp_server.close()

upd客户端:

import socket
udp_client = socket.socket(type=socket.SOCK_DGRAM)
server_ip_port = ('192.168.15.113',8001)

udp_client.sendto(b'hello',server_ip_port)

from_server_msg,server_addr = udp_client.recvfrom(1024)
print(from_server_msg)
print(server_addr)

udp_client.close()










posted @ 2018-10-16 16:56  Stone李  阅读(129)  评论(0编辑  收藏  举报
var a_idx = 0; jQuery(document).ready(function($) { $("body").click(function(e) { var a = new Array("","","","","","","♪","",""); var $i = $("").text(a[a_idx]); a_idx = (a_idx + 1) % a.length; var x = e.pageX, y = e.pageY; $i.css({ "z-index": 999999999999999999999999999999999999999999999999999999999999999999999, "top": y - 20, "left": x, "position": "absolute", "font-weight": "bold", "color": "rgb("+~~(255*Math.random())+","+~~(255*Math.random())+","+~~(255*Math.random())+")" }); $("body").append($i); $i.animate({ "top": y - 180, "opacity": 0 }, 1500, function() { $i.remove(); }); }); });