Advertisement
JDpaste

Chat using TCP Sockets - prototype !

Jan 7th, 2021
925
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.75 KB | None | 0 0
  1. import socket
  2. listeningPortNumber = 8081
  3.  
  4. #------------
  5. def send_text( sending_socket, text ):
  6.     text = text + "\n"
  7.     data = text.encode()
  8.     sending_socket.send(data)
  9. #-----------
  10. def get_text( receiving_socket ):
  11.     buffer = ""
  12.  
  13.     socket_open = True
  14.     while socket_open:
  15.         # read any data from the socket
  16.         data = receiving_socket.recv(1024)
  17.  
  18.         # if no data is returned the socket must be closed
  19.         if not data:
  20.             socket_open = False
  21.  
  22.         # add the data to the buffer
  23.         buffer = buffer + data.decode()
  24.  
  25.         # is there a terminator in the buffer
  26.         terminator_pos = buffer.find("\n")
  27.         # if the value is greater than -1, a \n must exist
  28.         while terminator_pos > -1:
  29.             # get the message from the buffer
  30.             message = buffer[:terminator_pos]
  31.             # remove the message from the buffer
  32.             buffer = buffer[terminator_pos + 1:]
  33.            
  34.             # yield the message (see below)
  35.             yield message
  36.             # is there another terminator in the buffer
  37.             terminator_pos = buffer.find("\n")
  38. #----------------------
  39. print('')
  40. print('Welcome to the Chat program')
  41. print('***************************')
  42. print('Chat program can run as a server or a client.')
  43. print('.. a chat Server must be running before any client !')
  44.  
  45. chatType = input('Enter "c" for Client mode .. else default is a Server ..\n=> ')
  46.  
  47. if chatType != "c": # not 'c' so launch Server
  48.     server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  49.     server_socket.bind(("0.0.0.0", listeningPortNumber))
  50.     server_socket.listen()
  51.     print("SERVER: waiting for connection")
  52.  
  53.     connection_socket, address = server_socket.accept()
  54.     print("SERVER: client connected")
  55.    
  56. else: # 'c' so launch Client
  57.     #------------------------------
  58.     # CLIENT: connect to TCP Server
  59.     ipAddress = input('Please enter IP address of server ..\n=> ')
  60.     connection_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  61.     #connection_socket.connect(("127.0.0.1", listeningPortNumber))
  62.     connection_socket.connect((ipAddress, listeningPortNumber))
  63.     print("CLIENT: Connected to server")
  64.     message = "Thanks for connecting me mate"
  65.     send_text( connection_socket, message )
  66. #-------------------------------------------
  67. # OK, got a connection_socket
  68. while True:
  69.     # receive msg ..
  70.     message = next( get_text( connection_socket ))
  71.     #message =  get_text( connection_socket )
  72.     print(message)
  73.     message = input('Please enter chat text ..\n=> ')
  74.     send_text( connection_socket, message )
  75.     print('Waiting for next chat message from network ..')
  76.  
  77. connection_socket.close()
  78. #server_socket.close()
  79. print('SERVER: sockets CLOSED !')
  80.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement