Für Projekte, wie Chat's usw. würde ich Python benutzen. Visual Basic ist auch nicht wirklich empfehlenswert. Für wirklich große Projekte, wie z.B. 3D Spiele würde ich an deiner Stelle C# verwenden.
Ich habe auch mal einen Chat-Client und -Server in Python geschrieben. Es ist teilweise allerdings noch etwas verbuggt. Ich würde es nur als Vorlage benutzen, da ich selber festgestellt habe, dass manche Dinge etwas unpraktisch implementiert wurden. Naja, wie auch immer.
#Client
import socket, time, sys from tkinter import * from tkinter import scrolledtext from _thread import * def init_connection(): global conn global BUFF_SIZE conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_IP = str(input("Server-IP: ")) server_PORT = int(input("Server-Port: ")) server = (server_IP, server_PORT) BUFF_SIZE = 2048 conn.connect(server) send("n'" + str(input("Nickname: "))) start_new_thread(receive_message, ()) def init_gui(): global main global chat_textfield global msg_textbox global users_list main = Tk() main.title("Chat") main.protocol("WM_DELETE_WINDOW", logout) chat_frame = Frame(main) chat_frame.pack(side="left", fill="y") chat_textfield = scrolledtext.ScrolledText(chat_frame) chat_textfield.config(state=DISABLED) chat_textfield.pack(anchor="n", expand="yes", fill="y") msg_textbox = Entry(chat_frame) msg_textbox.bind("<Return>", send_msg_textbox) msg_textbox.pack(side="left", anchor="s", expand="yes", fill="both") send_button = Button(chat_frame, text="Nachricht senden", command=send_msg_textbox) send_button.pack(side="left", anchor="s") users_scb = Scrollbar(main, orient="vertical") users_list = Listbox(main, height=0, yscrollcommand=users_scb.set) users_scb["command"] = users_list.yview users_list.pack(side="left", expand="yes", fill="both", anchor="n") users_scb.pack(side="left", fill="y") main.mainloop() def send(message): message = bytes(message, "UTF-8") conn.send(message) def send_msg_textbox(*event): send("m'" + str(msg_textbox.get())) msg_textbox.delete(0, END) def add_text(message): chat_textfield.config(state="normal") chat_textfield.insert("end", message) chat_textfield.config(state="disabled") chat_textfield.pack(fill="both", expand="yes") def receive_message(): time.sleep(1) while True: data = conn.recv(BUFF_SIZE) data = data.decode() print(data) if data[:2] == "m'": data = data[2:] data = data.partition("'") add_text(str(data[0] + ": " + data[2] + "\n")) elif data[:2] == "l'": data = data[2:] data = data.partition("'") add_text(str(data[0] + "\n")) userlist = data[2].split(";") del userlist[int(len(userlist) - 1)] users_list.delete(0, "end") for user in userlist: users_list.insert("end", user) def logout(): conn.close() main.destroy() sys.exit(0) init_connection() init_gui() #Server import socket, time, sys from _thread import * def send_all(message): for e in clients: conn = e[0] conn.send(bytes(message, "UTF-8")) def client_handler(client): conn = client[0] addr = client[1] while True: try: data = conn.recv(BUFF_SIZE) data = data.decode() print(data) if data[:2] == "m'": data = data[2:] send_all("m'" + nick + "'" + data) elif data[:2] == "n'": nick = data[2:] clients[clients.index(client)].append(nick) userlist = "" for client in clients: userlist += client[2] + ";" send_all("l'[" + nick + " hat sich eingeloggt.]'" + userlist) except: clients.remove(client) userlist = "" for client in clients: userlist += client[2] + ";" send_all("l'[" + nick + " hat sich ausgeloggt.]'" + userlist) conn.close() break host = "0.0.0.0" port = 8004 print(host, port) MAX_CLIENTS = 500 BUFF_SIZE = 2048 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((host, port)) clients = [] s.listen(MAX_CLIENTS) for i in range(MAX_CLIENTS): conn, addr = s.accept() clients.append([conn, addr]) print(addr) start_new_thread(client_handler, (clients[clients.index([conn, addr])], ))