Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Array of Listening Sockets
#1
I am trying to figure out how to create a server. Here is what I want:

- Service port runs on port 5000
- Client connects to port and receives a random port in return.
- Server opens random listening port with 2 connections max
- Client disconnects from service port and reconnects on random port received.
- Remote client connects on random port as well and information is fwd between the 2 clients connected on that random port.

Issues:
I can get the service port working. I'm stuck at how to create an array of listening sockets generated on the fly as well as how to fwd info between only the 2 clients connected on each array. So if 6 clients connect there would be 6 different sockets with 2 clients on each. Information would only flow between 2 clients on each socket.

Here is what I have:

import socket, select

sock_config = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock_config.bind(('0.0.0.0', 5000))
sock_config.listen(5)
config =

rlist = [sock_config]
wlist =
errlist =

out_buffer =


while True:
r, w, err = select.select(rlist, wlist, errlist)

for sock in r:
if sock == sock_config:
conf, addr = sock.accept()
config.append(conf)
rlist.append(conf)
else:
data = sock.recv(1024)
if data.find('[CONNECT]') != -1:
#Generate Random port or have a list of available ports.
#We will use 12345 for testing
sock.send("12345")
sock.close()
rlist.remove(sock)
else:
out_buffer.append(data)

out_string = ''.join(out_buffer)
out_buffer =

for sock in err:
sock.close()
rlist.remove(sock)

#for sock in w:
# print 'Test'

Any Help would be greatly appreciated. I am using Python 2.7
Reply
#2
import socket, select

sock_config = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock_config.bind(('0.0.0.0', 5000))
sock_config.listen(5)
config = []    

rlist = [sock_config]
wlist = []
errlist = []

out_buffer = []


while True:
	r, w, err = select.select(rlist, wlist, errlist)
	
	for sock in r:
		if sock == sock_config:
			conf, addr = sock.accept()
			config.append(conf)
			rlist.append(conf)
		else:
			data = sock.recv(1024)
			if data.find('[CONNECT]') != -1:
				#Generate Random port or have a list of available ports.
				#We will use 12345 for testing
				sock.send("12345")
				sock.close()
				rlist.remove(sock)
			else:
				out_buffer.append(data)

		out_string = ''.join(out_buffer)
		out_buffer = []

	for sock in err:
		sock.close()
		rlist.remove(sock)
		
	#for sock in w:
	#	print 'Test'
		
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Listening music from url ebolisa 1 1,672 Nov-25-2020, 07:53 AM
Last Post: ebolisa
  Waiting and listening test 2 2,146 Nov-13-2020, 04:43 PM
Last Post: michael1789
  How can I make this server stop listening for connections to sockets Emekadavid 0 3,441 Jun-03-2020, 02:28 PM
Last Post: Emekadavid
  Python sockets : Client sending to the server nico31780 0 2,339 May-17-2020, 07:56 PM
Last Post: nico31780
  Sockets confusion! MuntyScruntfundle 1 2,212 Oct-16-2018, 07:18 PM
Last Post: Larz60+
  listening to USB DPaul 3 5,345 Dec-27-2017, 07:31 AM
Last Post: DPaul
  Checking connectivity for sockets in Python pikkip 1 3,044 Apr-27-2017, 05:02 PM
Last Post: Ofnuts
  listening to user input even after opening an application in mac sharma16aug 4 4,931 Jan-24-2017, 10:43 AM
Last Post: sharma16aug
  My sockets are not working Ponomarenko Pavlo 2 4,132 Jan-23-2017, 04:24 AM
Last Post: wavic

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020