客户端服务器通过Python中相同文件/程序中的套接字进行通信?

时间:2014-02-25 18:19:36

标签: python sockets

我需要制作一个在同一个程序中在客户端和服务器之间来回通信的程序,但是按照上面的说明:http://woozle.org/~neale/papers/sockets.html它只是继续听,我看不到任何打印。

如何在同一个文件中启用基本客户端服务器功能?

#!/usr/bin/python           # This is server.py file
import socket               # Import socket module
import random
import os
import time as t

#open socket
s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = random.randint(0,65535)                # Reserve a port for your service.

if os.fork() == 0:
   #server
   s.listen(1)
   print 'about to listen'
   while 1:
      c = s.accept()
      cli_sock, cli_addr = c
      cli_sock.send("Hello to you! %s" % cli_addr)
elif os.fork() == 0:
   t.sleep(1)
   #client
   print 'in here2'
   s.bind((host, port))        # Bind to the port
   s.connect((host,port))
   s.send("Hello!\n")
   print s.recv(8192)
   s.close()

1 个答案:

答案 0 :(得分:1)

你永远不会打你的客户端代码,因为你在启动监听器后立即进入无限循环。对于像这样的玩具示例,您需要创建2个套接字对象,一个用于服务器,一个用于客户端,然后在代码中在它们之间来回跳转;除非它在并行线程/进程中运行,否则你不能使用像你这样的服务永远样式循环,所以你不要阻止主线程的执行。