python网络编程,通过服务名称和会话类型(tcp,udp)获取端口号,简单的异常处理

时间:2022-08-06 11:53:14

作为一个php程序员,同时有对网络方面感兴趣,php就比较蛋疼了,所以就抽了些时间看python

之前学python基础因为工作原因,断断续续的看了个基础,差不多是可以写代码了

最近在看《python网络编程基础》,准备是边实践边学习了,对书上的一个例子做了个复制

cli下运行的代码

 #! /usr/bin/env python
# -*- coding:utf-8 -*-
# ^设置编码:代码中有中午会导致编译错误 # 引入socket,sys模块
import socket,sys # 接收cli传递的参数(服务名称)
ser_name = sys.argv[1] print "Creating socket..."
# 创建socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print "dine." print "Looking up port number..." # 异常捕获:cli传递的服务名称可能不正确,对这个异常处理
try:
# 通过服务名称和回话类型获取端口号
port = socket.getservbyname(ser_name,'tcp')
except socket.error as e:
# 异常
print e
sys.exit(1) print "done." print "Connect to remote host %d..." % port # 捕获异常:服务端可能没有开启对应服务,或者网络问题导致连接失败出现异常
try:
# 连接服务端
s.connect(("www.baidu.com",port))
except socket.error as e:
# 异常
print "Strange error creating socket: %s" % e
sys.exit(1) print "done." # 成功建立连接后可以得到的信息
# 客户端发起连接的ip和端口
print "Connect from ",s.getsockname()
# 服务端的ip获取端口
print "Connect to ",s.getpeername()