1

I am new to socket programming and I am trying to write a python program for a client which also acts as a server. I need 2 listening TCP servers in 1 code.

The client part is looped 5 times to create 5 client instances.

The Server part is supposed to listen to 50 clients at the same time.

While I am able to make client and 1 server in the same code, the 2nd server wont connect.

I will be very grateful if someone could help me.

I am attaching the code below.

import socket

count = 1
port1 = 12345
x=range(5)
for n in x:
    ClientSocket = socket.socket()
    host = '127.0.0.1'
    port = 1233
    print('Waiting for connection here')
    try:
        ClientSocket.bind(('',port1))
        ClientSocket.connect((host, port))
    except socket.error as e:
        print(str(e))

    Response = ClientSocket.recv(1024)

    Input = 'ServerMini'+str(count)
    ClientSocket.send(str.encode(Input))
    Response1 = ClientSocket.recv(1024)
    print(Response.decode('utf-8'))
    print(Response1.decode('utf-8'))
    ClientSocket.close()
    port1 = port1+1
    count = count+1
ClientSocket.close()

import os
from _thread import *

ServerSocket = socket.socket()
host = '127.0.0.1'
port = 12345
porta = 12346
ThreadCount = 0
try:
    ServerSocket.bind((host, port))
except socket.error as e:
    print(str(e))

print('Waitiing for a Connection..')
ServerSocket.listen(5)


def threaded_client(connection):
    connection.send(str.encode('Welcome to the Servern'))
#     while True:
    data = connection.recv(2048)
    print (data)
    print (port)
    reply = 'Server1 Says: ' + data.decode('utf-8') + 'connected' + '12345'
#         if not data:
#             break
    connection.sendall(str.encode(reply))
    connection.close()

x=range(50)
for n in x:
    while True:
        Client, address = ServerSocket.accept()
        print('Connected to: ' + address[0] + ':' + str(address[1]))
        start_new_thread(threaded_client, (Client, ))
        ThreadCount += 1
        print('Thread Number: ' + str(ThreadCount))
    ServerSocket.close()
    
    
# import os
# from _thread import *

# ServerSocket = socket.socket()
# host = '127.0.0.1'
# port = 12346
# ThreadCount = 0
try:
    ServerSocket.bind((host, porta))
except socket.error as e:
    print(str(e))

print('Waitiing for a Connection..')
ServerSocket.listen(5)


def threaded_client(connection):
    connection.send(str.encode('Welcome to the Servern'))
#     while True:
    data = connection.recv(2048)
    print (data)
    print (port)
    reply = 'Server2 Says: ' + data.decode('utf-8') + 'connected' + '12345'
#         if not data:
#             break
    connection.sendall(str.encode(reply))
    connection.close()

x=range(50)
for n in x:
    while True:
        Client, address = ServerSocket.accept()
        print('Connected to: ' + address[0] + ':' + str(address[1]))
        start_new_thread(threaded_client, (Client, ))
        ThreadCount += 1
        print('Thread Number: ' + str(ThreadCount))
    ServerSocket.close()
Benette
  • 11
  • 3

0 Answers0