PYTHON UDP/TCP 服务器与客户端如何连接

2024-05-18 13:24

1. PYTHON UDP/TCP 服务器与客户端如何连接

你没有编程经验,一来就搞网络编程,你是天才吗?
先从编程的最基本概念开始学起吧。先买本《python基础教程》把前面基础的部分读懂了,上机实践。遇到错误信息了,自己去百度查找错误的原因。

至于你说的这几个函数,帮助手册上都有详细说明的。
变量A=5,不能直接通过网络传递,网络只能传二进制数据。你的变量需要串行化,比如变成字符串或者base64编码,才能传递,到了服务端要根据你事先定义好的协议去解析,才能重新得到这个变量。

PYTHON UDP/TCP 服务器与客户端如何连接

2. 如何在Python下连接Oracle数据库

本文实例讲述了python连接oracle数据库的方法,分享给大家供大家参考。具体步骤如下:
一、首先下载驱动:(cx_Oracle)
http://www.python.net/crew/atuining/cx_Oracle/
 不过要注意一下版本,根据你的情况加以选择。
二、安装:
首先配置oracle_home环境变量
 执行那个exe安装程序就可以了,它会copy一个cx_Oracle.pyd到Libsite-packages目录下。
 如果是linux,执行

python setup.py build
 python setup.py install

三、执行一段测试程序:

import cx_Oracle

con = cx_Oracle.connect( "xjtu_test", "37343734","xjtu.world")
 cursor = con.cursor()
 cursor.close()
 con.close()

 里边connect中的3个参数从左到右分别是:user, pass, TNS。
 那个TNS可以用Oracle客户端工具中的Net Configuration Assistant来配置。

四、具体的cx_Oracle API可以参考:
 http://www.python.net/crew/atuining/cx_Oracle/html/cx_Oracle.html
五、示例:

>>> import cx_Oracle
>>> conn=cx_Oracle.connect ('scott/tiger@oratest')
>>> curs=conn.cursor ()
>>> sql='select * from emp'
>>> rr=curs.execute (sql)
>>> row=curs.fetchone()
>>> row
 (7369, 'SMITH', 'CLERK', 7902, datetime.datetime(1980, 12, 17, 0, 0), 800.0, None, 20)
>>> while row:
     (ID,NAME)=(row[0],row[1])
     row=curs.fetchone ()
     print ID,NAME

    
 7369 SMITH
 7499 ALLEN
 7521 WARD
 7566 JONES
 7654 MARTIN
 7698 BLAKE
 7782 CLARK
 7788 SCOTT
 7839 KING
 7844 TURNER
 7876 ADAMS
 7900 JAMES
 7902 日常
 7934 MILLER

如果使用windows平台,执行那段测试代码时你肯定遇到问题了,一般会有以下问题:
① import cx_Oracle 时报告找不到OCI.DLL:
 到装了Oracle的机器上找一个,然后copy到Libsite-packages目录下就可以了。
② cx_Oracle.connect 时报告RuntimeError: Unable to acquire Oracle environment handle:
 这个比较麻烦,按以下步骤来解决:(可能不需要所有的步骤,我没有确认,不过把以下步骤都执行了,确实问题就解决了)
 首先,确认你是在控制台下边来执行这个python脚本的。而不是某些ide,例如:PyDev(它们似乎无法载入os的环境变量)。
 其实,在本机安装Oracle(只安客户端工具就可以了)。
 最后,添加以下环境变量:(我给出我的,换成你自己的路径就可以了)

ORACLE_HOME=D:OracleOra81
 PATH=D:OracleOra81bin;

希望本文所述对大家的Python程序设计有所帮助。

3. python脚本,TCP客户端断开连接,服务器一直收到空白消息,如何正常断开二者连接?见下图

建议:
1、当点击客户端的断开按钮,给服务端发送一个stop消息,然后客户端停止发送
2、当服务端收到客户端的stop消息,即停止接收该客户端发来的消息

所以你的这个if判断语句的xxxx应该由客户端发过来做判断。

python脚本,TCP客户端断开连接,服务器一直收到空白消息,如何正常断开二者连接?见下图

4. python scoket服务器端怎么查看连接上来的所有客户端

使用多线程,下面的代码,简单实现一个多线程的web服务器:
#coding=utf-8
import socket
import threading
from time import sleep
def response(sock, addr):
    print "收到请求"
    data = sock.recv(1024)
    print data
    sock.send(html)
    sock.close()
html = '''HTTP/1.1 200 OK\nContent-Type: text/html\n\r\nHello world!'''
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0', 80))
s.listen(50)
print "正在等待连接……"
while 1:
    sleep(0.1)
    sock,addr = s.accept()
    t = threading.Thread(target=response, args=(sock,addr))
    t.start()

5. window系python连接linux服务器上Redis

Redis Desktop Manager  支持windows的客户端。
下载地址:网页链接 

window系python连接linux服务器上Redis

6. 如何在Linux上为Python语言安装Redis客户端

事实上,从全局执行效率视角来看,同步方式要好于异步方式,毕竟同步方式节省了线程切换、线程间同步,以及线程拉起等操作产生的额外开销。
特别是当大部分频繁使用的数据都可以直接从主内存中读取时,同步方式的表现将更为优异。

7. 如何在Windows环境下安装并配置OpenVPN

Step 1  OpenVPN安装配置
        1.1 下载openvpn 并安装
·  下载openvpn-2.0.5-gui-1.0.3版,地址 http://openvpn.se/files/install_packages/openvpn-2.0.5-gui-1.0.3-install.exe,安装。(例如:安装到F:\OPENVPN目录下,下文举例都用此目录)
·  安装完成后生成一个新网卡,并在网络连接里出现本地连接[X],把tcp/ip属性改成手动配置,192.168.10.1(根据实际情况更改) ,255.255.255.0,其余不填。
        1.2 生成证书
·  修改F:\OpenVPN\easy-rsa\vars.bat.sample的以下部分
CODE:
set HOME=%ProgramFiles%\OpenVPN\easy-rsa
set KEY_COUNTRY=US
set KEY_PROVINCE=CA
set KEY_CITY=SanFrancisco
set KEY_ORG=FortFunston
set KEY_EMAIL=mail@host.domain
(请根据自身情况修改)改为
CODE:
set HOME=F:\OpenVPN\easy-rsa
set KEY_COUNTRY=CN
set KEY_PROVINCE=Hubei
set KEY_CITY=Wuhan
set KEY_ORG=51NB
set KEY_EMAIL=MATONG_01@163.COM
·  生成证书
o OpenVPN 有两种安全模式,一种基于使用 RSA 证书和密钥的 SSL/TLS,一种使用预先分享的静态密钥。本文采用SSL/TLS 模式。TLS模式的优点是安全,而且便于管理用户。默认情况下证书和用户是一对一的,多个用户使用同一证书会被踢出。
o 开始-->运行-->键入cmd,回车,进入命令提示符-->进入F:\OpenVPN\easy-rsa目录
QUOTE:
F:\OpenVPN\easy-rsa>
o 执行如下命令
CODE:
init-config
 
QUOTE:
F:\OpenVPN\easy-rsa>init-config
F:\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat
已复制         1 个文件。
F:\OpenVPN\easy-rsa>copy openssl.cnf.sample openssl.cnf
已复制         1 个文件。
CODE:
vars
 
CODE:
clean-all
 
QUOTE:
F:\OpenVPN\easy-rsa>vars
F:\OpenVPN\easy-rsa>clean-all
系统找不到指定的文件。
已复制         1 个文件。
已复制         1 个文件。
 
CODE:
 
vars
build-ca
build-dh
 
QUOTE:
F:\OpenVPN\easy-rsa>vars
F:\OpenVPN\easy-rsa>build-ca          #生成根证书
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
writing new private key to 'keys\ca.key'
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.

Country Name (2 letter code) [CN]:
State or Province Name (full name) [Hubei]:
Locality Name (eg, city) [Wuhan]:
Organization Name (eg, company) [51NB]:
Organizational Unit Name (eg, section) []:CMWAP
Common Name (eg, your name or your server's hostname) []:fangzy         #填自己的名字
Email Address [mail@host.domain]:
F:\OpenVPN\easy-rsa>build-dh           #这个有点慢,估计要半分钟
Loading 'screen' into random state - done
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time

CODE:
build-key-server server
 
QUOTE:
F:\OpenVPN\easy-rsa>build-key-server server        #生成服务器端的密钥,server为服务器名
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
writing new private key to 'keys\server.key'
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [CN]:
State or Province Name (full name) [Hubei]:
Locality Name (eg, city) [Wuhan]:
Organization Name (eg, company) [51NB]:
Organizational Unit Name (eg, section) []:CMWAP
Common Name (eg, your name or your server's hostname) []:server          #填自己的名字
Email Address [mail@host.domain]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:xxxx           #输入4位以上的密码
An optional company name []:
Using configuration from openssl.cnf
Loading 'screen' into random state - done
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'CN'
stateOrProvinceName   :PRINTABLE:'Hubei'
localityName          :PRINTABLE:'Wuhan'
organizationName      :PRINTABLE:'51NB'
organizationalUnitName:PRINTABLE:'CMWAP'
commonName            :PRINTABLE:'server'
emailAddress          :IA5STRING:'mail@host.domain'
Certificate is to be certified until Feb  1 05:30:29 2016 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
 
CODE:
build-key client
       QUOTE:
F:\OpenVPN\easy-rsa>build-key client           #生成客户端的密钥,client为用户名
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
writing new private key to 'keys\client.key'
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [CN]:
State or Province Name (full name) [Hubei]:
Locality Name (eg, city) [Wuhan]:
Organization Name (eg, company) [51NB]:
Organizational Unit Name (eg, section) []:CMWAP
Common Name (eg, your name or your server's hostname) []:client        
Email Address [mail@host.domain]:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:xxxx
An optional company name []:
Using configuration from openssl.cnf
Loading 'screen' into random state - done
DEBUG[load_index]: unique_subject = "yes"
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'CN'
stateOrProvinceName   :PRINTABLE:'Hubei'
localityName          :PRINTABLE:'Wuhan'
organizationName      :PRINTABLE:'51NB'
organizationalUnitName:PRINTABLE:'CMWAP'
commonName            :PRINTABLE:'client'
emailAddress          :IA5STRING:'mail@host.domain'
Certificate is to be certified until Feb  1 05:31:40 2016 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
                   生成多个客户端密钥,执行build-key client1 …… build-key xyz。
 
复制证书文件
刚才生成的证书文件在F:\OpenVPN\easy-rsa\keys下,服务器端需要的文件为ca.crt,dh1024.pem,server.crt,server.key ,客户端需要的文件为:ca.crt client.crt client.key(xxx.crt xxx.key),配置.ovpn文件时需要用到。
1.3 配置server.ovpn文件
·  在\OpenVPN\config目录下创建server.ovpn文件将ca.crt,dh1024.pem,server.crt,server.key复制到F:\OpenVPN\config目录下
·  服务器端文件示例:
server.ovpn
CODE:
 
port 1198
proto tcp-server
dev tun
server 192.168.10.0 255.255.255.0
keepalive 20 180
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
push "redirect-gateway def1"
push "dhcp-option DNS 192.168.10.1"
mode server
tls-server
status openvpn-status.log
comp-lzo
verb 4
   1.4 客户端安装与配置
        o 安装OpenVPN,同1.1,但是不用更改本地连接设置。
       o 配置OpenVPN
           § 在\OpenVPN\config目录下创建client.ovpn文件,将ca.crt client.crt client.key 复制到  \OpenVPN\config
                 目录下,这3个文件由服务器端生成并发放。
       § 客户端文件示例:
           client.ovpn
                       CODE:
                       client
                       dev tun
                       proto tcp-client
                       remote jacky.10dig.com 1198                #这里填入remote server add,可用IP或者域名,
                                  #若Server是动态IP,可到http://www.wingdns.com/注册动态域名绑定动态IP。
                                  #如Client所连接Server使用路由上网,则需要使用NAT将地址映射到Server端。
                       resolv-retry infinite
                       nobind
                       http-proxy 10.0.0.172 80           #这里填入你的代理服务器地址和端口,没有代理则不用这行
                       mute-replay-warnings
                       ca ca.crt
                       cert client.crt              #这里改成每个客户端相应的证书
                       key client.key             #这里改成每个客户端相应的证书
                       comp-lzo
                       verb 4
                       status openvpn-status.log 
右击openvpn-gui图标,点connect,即可连接。
    
                         The End
                  Thank you for your reading...

如何在Windows环境下安装并配置OpenVPN

8. 在电脑上安装谷歌云端硬盘客户端,安装完了后打开,显示是Error loading Python DLL:.....\pyhton27.dll

python27.dll应该没有安装到位。你找一个python27.dll,复制到你的程序启动目录里。如果还不成。
 
建议你先安装一个python2.7.4版本。安装完了后再试试看。
 
另外还有一个开发版与调试版本的问题。如果还不成,试试用调试版本。
 
如果仍然不成。就将python27.dll复制到c:的windows目录的system32子目录里。
最新文章
热门文章
推荐阅读