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,667 Nov-25-2020, 07:53 AM
Last Post: ebolisa
  Waiting and listening test 2 2,141 Nov-13-2020, 04:43 PM
Last Post: michael1789
  How can I make this server stop listening for connections to sockets Emekadavid 0 3,433 Jun-03-2020, 02:28 PM
Last Post: Emekadavid
  Python sockets : Client sending to the server nico31780 0 2,333 May-17-2020, 07:56 PM
Last Post: nico31780
  Sockets confusion! MuntyScruntfundle 1 2,207 Oct-16-2018, 07:18 PM
Last Post: Larz60+
  listening to USB DPaul 3 5,341 Dec-27-2017, 07:31 AM
Last Post: DPaul
  Checking connectivity for sockets in Python pikkip 1 3,037 Apr-27-2017, 05:02 PM
Last Post: Ofnuts
  listening to user input even after opening an application in mac sharma16aug 4 4,920 Jan-24-2017, 10:43 AM
Last Post: sharma16aug
  My sockets are not working Ponomarenko Pavlo 2 4,129 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