Python套接字客户端服务器应用程序

时间:2010-08-18 06:40:26

标签: python sockets

我写了两个通过socket通信的应用程序。这是代码:

服务器

import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("",9999))
server_socket.listen(5)

video = True
power = True

print "TCPServer Waiting for client on port 9999"

while 1:
    client_socket,address = server_socket.accept()
    print "I got a connection from ", address

    while 1:
        data = client_socket.recv(512)
        if data == 'vc' & video == True:
            data = 'You can connect to Video'
            video = False
            client_socket.send(data)
        elif data == 'pc' & power == True:
            data = 'You can connect to Power Switch'
            power = False
            client_socket.send(data)
        else :
            data = 'Device is in use - wait a few secconds'
            client_socket.send(data)

客户端:

import socket
import time
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("localhost", 9999))
while 1:
    data = ( 'Please vc or pc: ' )
    time.sleep(5)
    if data=='pc' | data=='vc':
        print 'send to server: ' + data
        time.sleep(5)
        client_socket.send(data)
        data = client_socket.recv(512)
        print data
    else:
        print 'bad data - please try again'

    print data
    time.sleep(5)

我刚开始使用套接字进行冒险,但我遇到了问题。为什么我看不到服务器响应?我粘贴代码time.sleep()来停止程序并查看rosponses,但是这些应用程序在我在客户端终端写入第一条消息并按回车后终止。求你帮帮我。

我在Windows 32bit上工作。 Python 2.6

1 个答案:

答案 0 :(得分:2)

你不发送任何东西。我假设行data = "Please vc or pc:旨在从用户那里获得输入,但它只是将字符串分配给数据。然后,当您检查if data == 'pc' | data == 'vc'时,检查失败,因此会打印“错误数据”。

也不要在布尔表达式中使用| - 使用orand。 |和&会做按位操纵 - 有时会做正确的事情,但有时它会咬你的屁股。