Tagged: conversation, Handshake, receive, send
- This topic has 2 replies, 2 voices, and was last updated 8 years, 1 month ago by Anonymous.
-
AuthorPosts
-
May 4, 2016 at 22:08 #4408AnonymousInactive
Hello all,
I may be an idiot, because I can’t seem to get my server to RECEIVE and then REPLY to the received packet.
At the moment my program receives perfectly fine, however I want to setup a “handshake” process but cannot do that if my program is not able to send back :S
I did some digging and found you can see their IP and port (the received packet) but, if I send something there I just timeout – Lost here.
Source provided
If anyone could provide with a simple “conversation” program client/server – I would be mega greatful
As simple as possible please 🙂
my code:
CLIENT:
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using NetworkCommsDotNet; using NetworkCommsDotNet.Connections; using System.Threading; namespace GenericServerBasedGameTest_Client { static class Program { static string serverInfo, serverIP, ourPort; static int serverPort; static void Main() { Console.WriteLine(">Starting Client"); serverInfo = "192.168.0.10:7700"; //server IP:Port Console.WriteLine(">>serverInfo = {0}", serverInfo); Console.WriteLine(">>Splitting into seperate vars"); GetServerIPAndPort(serverInfo); string MsgToSend = (""); SendMsg(serverIP, serverPort, MsgToSend); ShutdownConnection(); Console.ReadLine(); } static void SendMsg(string IP, int PORT, string MSG) { try { Console.WriteLine(">Sending MSG '" + MSG + "'"); NetworkComms.SendObject("Message", IP, PORT, MSG); Console.WriteLine(">Sent!"); } catch (Exception e) { Console.WriteLine(e.Message); } } static void ShutdownConnection() { NetworkComms.Shutdown(); } static void GetServerIPAndPort(string serverInformation) { serverIP = serverInformation.Split(':').First(); Console.WriteLine(">>>IP: {0}", serverIP); serverPort = Convert.ToInt32(serverInformation.Split(':').Last()); Console.WriteLine(">>>Port: {0}", serverPort); }
SERVER:
class Program { static void Main(string[] args) { //Trigger the method PrintIncomingMessage when a packet of type 'Message' is received //We expect the incoming object to be a string which we state explicitly by using <string> NetworkComms.AppendGlobalIncomingPacketHandler<string>("Message", PrintIncomingMessage); //Start listening for incoming connections Connection.StartListening(ConnectionType.TCP, new IPEndPoint(IPAddress.Any, 7700)); //Print out the IPs and ports we are now listening on Console.WriteLine("Server listening for TCP connection on:"); foreach (IPEndPoint localEndPoint in Connection.ExistingLocalListenEndPoints(ConnectionType.TCP)) Console.WriteLine("{0}:{1}", localEndPoint.Address, localEndPoint.Port); //Let the user close the server Console.WriteLine("Press any key to close server."); Console.ReadKey(true); //We have used NetworkComms so we should ensure that we correctly call shutdown NetworkComms.Shutdown(); } /// <summary> /// Writes the provided message to the console window /// </summary> /// <param name="header">The packet header associated with the incoming message</param> /// <param name="connection">The connection used by the incoming message</param> /// <param name="message">The message to be printed to the console</param> private static void PrintIncomingMessage(PacketHeader header, Connection connection, string message) { Console.WriteLine("A message was received from " + connection.ToString() + " which said '" + message + "'."); // Console.WriteLine(connection.ConnectionInfo.RemoteEndPoint); string ClientIP = Convert.ToString(((System.Net.IPEndPoint)connection.ConnectionInfo.RemoteEndPoint).Address); string ClientPORT = Convert.ToString(((System.Net.IPEndPoint)connection.ConnectionInfo.RemoteEndPoint).Port); string MsgToSend = "ASDF!"; SendMsg(ClientIP, Convert.ToInt32(ClientPORT), MsgToSend); } static void SendMsg(string IP, int PORT, string MSG) { try { Console.WriteLine(">Sending MSG '" + MSG + "'"); NetworkComms.SendObject("Message", IP, PORT, MSG); Console.WriteLine(">Sent!"); } catch (Exception e) { Console.WriteLine(e.Message); } } static void ShutdownConnection() { NetworkComms.Shutdown(); }
I tried searching, and couldn’t find anything – sorry if this is repeated
THANKS!
MagicMay 4, 2016 at 22:41 #4409AnonymousInactiveSo I got it to work by basically shoehorning the server code into the client… i feel this isn’t the way it is supposed to be done – but it works
anybody know the proper way?
November 15, 2016 at 03:29 #4423AnonymousInactivemaybe use NetworkComms.SendReceiveObject on the client?
-
AuthorPosts
- You must be logged in to reply to this topic.