网络编程1

来源:互联网 发布:apache服务器安装 编辑:程序博客网 时间:2024/06/01 18:29

网络的目的:信息传递和资源共享
手段:节点+线路
IP的作用:标识网络中的一台主机(交换机:局域网内部的信息交换 路由器:与外部的信息交换)
IP地址组成:网路号+主机号。由四个段组成,IPV4.未来:IPV6,8个段
IP地址的分类: ABCDE和私人地址
127.0.0.1始终指向主机自身
ping命令:查看和某个地址的连接是否通畅
ifconfig:查看IP
设置IP地址:sudo ifconfig ens33 + IP地址。在重启后会恢复默认地址。
端口:标识主机中正在运行的一个程序,相当于这个程序的门。IP+端口号会唯一确认一台主机上的程序
LINux系统共有65535个端口号,其中0~1023是固定端口,其余为动态端口。
80 http
21 ftp
22 ssh
443 https
socket:套接字。相当于端口上的一个插孔。通过它进行通信。本质是对底层TCP/IP协议的封装,并提供一套应用程序接口。
使用socket进行通信的流程:创建、通信、关闭
下面是在UDP传输协议下的简单聊天器
服务器端:`
import socket

def recv_msg(udp_server_socket):
rec_msg,rec_adr = udp_server_socket.recvfrom(4096)
print(“%s:%s” % (str(rec_adr),rec_msg.decode()))

def send_msg(udp_server_socket):
ip = input(“IP:”)
port = int(input(“port:”))
msg = input(“reply:”)
udp_server_socket.sendto(msg.encode(),(ip,port))

def main():
udp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
udp_server_socket.bind((“”,7788))
while True:
print(“=”*30)
num = input(“请选择要进行的操作: 1/发信息 2/收信息 3/退出”)
print(“=”*30)
if num == “1”:
send_msg(udp_server_socket)
elif num == “2”:
recv_msg(udp_server_socket)
elif num == “3”:
break
else:
print(“你的输入有误,请重新输入”)
udp_server_socket.close()

if name == ‘main‘:
main()

客户端

import socket
udp_client_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
ip = input(“IP:”)
port = int(input(“PORT:”))
msg = input(“msg:”)
udp_client_socket.sendto(msg.encode(),(ip,port))
recv_msg,recv_adr = udp_client_socket.recvfrom(4096)
print(“%s:%s” % (str((ip,port)),recv_msg.decode()))
udp_client_socket.close()

之后会有多进程的聊天器版本

原创粉丝点击