Python网络编程遇到一个问题,请教高手解决
时间:2010-11-02
来源:互联网
让服务器的名字不要在代码里写死,要允许用户指定一个主机名和端口,只有在两个值都没有输入的时候,才使用默认值。
2·脚本如下:
- #!/usr/bin/python
-
- from socket import *
-
- HOST = raw_input('please IP address: ')
- PORT = input('please PORT: ')
- BUFSIZ = 1024
- ADDR = (HOST, PORT)
- tcpCliSock = socket(AF_INET, SOCK_STREAM)
- tcpCliSock.connect(ADDR)
- while True:
- data = raw_input('> ')
- if not data:
- break
- tcpCliSock.send(data)
- data = tcpCliSock.recv(BUFSIZ)
- if not data:
- break
- print data
- tcpCliSock.close()
不输入PORT值,程序报错;ADDR不能像函数那样传参。
作者: ning_lianjie 发布时间: 2010-11-02
貌似你HOST和PORT都没有指定默认值?
作者: donotblock 发布时间: 2010-11-02
要求用户输入的,要如何指定呢?
作者: ning_lianjie 发布时间: 2010-11-02
要求用户输入的,要如何指定呢?
ning_lianjie 发表于 2010-11-02 15:56
ADDR = (HOST and HOST or '127.0.0.1', PORT and PORT or '80')
作者: donotblock 发布时间: 2010-11-02
果然可以,谢谢。以前在定义函数的默认参数的时候,直接可以PORT=80,没想到元组中定义还需要这样。。。
不过现在还存在一个问题,就是定义PORT=input(),如果值为空,就会报错,解决这个问题,该从何处着手?
作者: ning_lianjie 发布时间: 2010-11-02
果然可以,谢谢。以前在定义函数的默认参数的时候,直接可以PORT=80,没想到元 ...
ning_lianjie 发表于 2010-11-02 16:07
PORT = input("abc:") 如果不输入直接敲回车,PORT就是空字符串啊。 你报什么错?
作者: donotblock 发布时间: 2010-11-02
- [root@ora01 16]# ./tsTclnt.py
- please IP address:
- please PORT:
- Traceback (most recent call last):
- File "./tsTclnt.py", line 6, in ?
- PORT = input('please PORT: ')
- File "<string>", line 0
-
- ^
- SyntaxError: unexpected EOF while parsing
- >>> PORT = input('please PORT: ')
- please PORT:
- Traceback (most recent call last):
- File "<stdin>", line 1, in ?
- File "<string>", line 0
-
- ^
- SyntaxError: unexpected EOF while parsing
作者: ning_lianjie 发布时间: 2010-11-02
ning_lianjie 发表于 2010-11-02 16:15
输入的Ctrl+D还是回车? 用raw_input试试
作者: donotblock 发布时间: 2010-11-02
直接回车,然后报错。如果用raw_input(),得到的结果就是空字符,就不是数字类型了。
- >>> PORT = raw_input('please PORT: ')
- please PORT:
- >>> PORT
- ''
作者: ning_lianjie 发布时间: 2010-11-02
直接回车,然后报错。如果用raw_input(),得到的结果就是空字符,就不是数字类 ...
ning_lianjie 发表于 2010-11-02 16:26
我用的是python 3.12, input可以接受回车, 看了下文档,其实就相当于2.x版本的raw_input。 2.6下面只能用raw_input了,结果转换下:
ADDR = (....., PORT and int(PORT) or 80)
作者: donotblock 发布时间: 2010-11-02
我用的版本就是Linux上面带的,Python 2.4.3
参考资料了解到raw_input与input的区别就是:
input()=eval(raw_input())
现在我迷惑的是,如何给变量PORT赋给用户输入的值,如果没有输入,如何用默认值赋。
作者: ning_lianjie 发布时间: 2010-11-02
我用的版本就是Linux上面带的,Python 2.4.3
参考资料了解到raw_input与input ...
ning_lianjie 发表于 2010-11-02 16:41
额,我上面的回答不就可以做到了?? 直接敲回车就用默认的值,输入了就用输入值。 你莫不是在问怎么处理命令行参数?
BTW, 有没有看玩Python的初级教程, 没有的话建议系统看看,这些都是基本问题。 《Dive into python》
作者: donotblock 发布时间: 2010-11-02
我的表述不太清楚,我先想一下。
作者: ning_lianjie 发布时间: 2010-11-02
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28