Multiclient server-client c# -
so asked question problem had in server-client program , solve problem though answers got on question didnt @ (thanks anyway :] ), have problem, need program make multiclient-server type of thing, , dont know do. have doubts on parameterizedthreadstart, how put work etc, i've searched on it, know thread method still dont know how heck use it, ideas? in advance.
client code:
public form1() { initializecomponent(); } private void form1_load(object sender, eventargs e) //connect server { client = new tcpclient(); ipendpoint ip_end = new ipendpoint(ipaddress.parse("192.168.254.34"), 123); // sincronizacao ip com porta try { socket socket = new socket(addressfamily.internetwork, sockettype.stream, protocoltype.tcp); client.connect(ip_end); if (client.connected) { stw = new streamwriter(client.getstream()); str = new streamreader(client.getstream()); stw.autoflush = true; backgroundworker1.runworkerasync(); // começar receber dados em background backgroundworker1.workersupportscancellation = true; // possibilidade de cancelar o fio } else { reconnect(); } } catch (socketexception exception) { messagebox.show(exception.message.tostring()); reconnect(); } } public void reconnect() { try { ipendpoint ip_end = new ipendpoint(ipaddress.parse("192.168.254.34"), 123); // sincronizacao ip com porta client.connect(ip_end); stw = new streamwriter(client.getstream()); str = new streamreader(client.getstream()); stw.autoflush = true; backgroundworker1.runworkerasync(); backgroundworker1.workersupportscancellation = true; } catch (socketexception exception) { messagebox.show(exception.message.tostring()); reconnect(); } } private void backgroundworker1_dowork(object sender, doworkeventargs e) { while(client.connected) { try { receive = str.readline(); this.textbox2.invoke(new methodinvoker(delegate () { textbox2.text=(receive + "\n\r"); })); receive = ""; } catch(exception x) { messagebox.show(x.message.tostring()); } } } } server code:
public partial class form1 : form { private tcpclient client; public streamreader str; public streamwriter stw; public string receive; public string text_to_send; public form1() { initializecomponent(); } private void backgroundworker2_dowork(object sender, doworkeventargs e) { if(client.connected) //enquanto o cliente tiver conectado pode escrever para o servidor { stw.writeline(text_to_send); this.textbox2.invoke(new methodinvoker(delegate () { textbox2.text= (text_to_send + "\n\r"); })); } else { messagebox.show("envio falhado!"); } } private void button1_click(object sender, eventargs e) { if (text_to_send != "" && textbox1.text != "") { text_to_send = textbox1.text; backgroundworker2.runworkerasync(); } else { messagebox.show("escreva uma mensagem para ser enviada"); } textbox1.text = ""; } private void form1_load(object sender, eventargs e) { tcplistener listener = new tcplistener(ipaddress.any, 123); listener.start(); client = listener.accepttcpclient(); if (text_to_send != "") { text_to_send = "conexão efetuada com sucesso..."; backgroundworker2.runworkerasync(); } str = new streamreader(client.getstream()); stw = new streamwriter(client.getstream()); stw.autoflush = true; } } server code (working on it):
public form1() { initializecomponent(); } private void backgroundworker2_dowork(object sender, doworkeventargs e) { if(client.connected) { stw.writeline(text_to_send); this.textbox2.invoke(new methodinvoker(delegate () { textbox2.text= (text_to_send + "\n\r"); })); } else { messagebox.show("envio falhado!"); } } private void button1_click(object sender, eventargs e) { if (text_to_send != "" && textbox1.text != "") { text_to_send = textbox1.text; backgroundworker2.runworkerasync(); } else { messagebox.show("escreva uma mensagem para ser enviada"); } textbox1.text = ""; } private void form1_load(object sender, eventargs e) // criar server { this.threadtcp = new thread(new threadstart(listentoclients)); listener.start(); client = listener.accepttcpclient(); if (text_to_send != "") { text_to_send = "conexão efetuada com sucesso..."; backgroundworker2.runworkerasync(); } str = new streamreader(client.getstream()); stw = new streamwriter(client.getstream()); stw.autoflush = true; } private void listentoclients() { listener.start(); while (true) { try { this.listener.accepttcpclient(); client = listener.accepttcpclient(); thread threadclient = new thread(new parameterizedthreadstart(handleclients)); threadclient.start(client); } catch (exception) { messagebox.show("error"); } } } private void handleclients() { //tcplistener listener = new tcplistener(ipaddress.any, int.parse(textbox4.text)); listener.start(); client = listener.accepttcpclient(); if (text_to_send != "") { text_to_send = "conexão efetuada com sucesso..."; backgroundworker2.runworkerasync(); } str = new streamreader(client.getstream()); stw = new streamwriter(client.getstream()); stw.autoflush = true; } } }
Comments
Post a Comment