Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I made it! Finaly!!!</p> <p>WSAAsyncSelect() structure</p> <pre><code> [DllImport("wsock32.dll")] public static extern int WSAAsyncSelect( int socket, int hWnd, int wMsg, int lEvent ); </code></pre> <p>WS2 Class</p> <pre><code>public class WS2 { public static Socket sock; public static byte[] data = new byte[8096]; public static int server = 0; public static bool forced = true; public static void Close() { //Extern.closesocket(sock.Handle.ToInt32()); //Extern.WSACleanup(); sock.Shutdown(SocketShutdown.Both); sock.Close(); if (forced) { Connect(); } } public static void ConnectTo(string ip,int port) { sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sock.Connect(ip, port); int handle = 0; var form1 = Form.ActiveForm as FormMain; if (form1 != null) handle = form1.GetHandle; if (handle == 0) { FormMain.PerformActionOnMainForm(form =&gt; form.memo.Text += "An error occured: Error code WS_01_ASYNC_HANDLE"); return; } Extern.WSAAsyncSelect(sock.Handle.ToInt32(), handle, Values.MESSAGE_ASYNC, Values.FD_READ | Values.FD_CLOSE); } public static void Connect() { //Get IP &amp;&amp; port string ip = GetIPFromHost("gwgt1.joymax.com"); if (ip == "") { ip = GetIPFromHost("gwgt2.joymax.com"); if (ip == "") { } server +=2; } else server +=1; int port = 15779; // ConnectTo(ip, port); } public static void Receive() { int size = sock.Receive(data); if (size == 0) { FormMain.PerformActionOnMainForm(form =&gt; form.memo.Text += "An error occured: Error Code WS_02_RECV_BEGN"); } Main.Handle(data, size); } public static string GetIPFromHost(string HostName) { IPHostEntry ip; try { ip = Dns.GetHostEntry(HostName); } catch (Exception) { return ""; } return ip.AddressList[0].ToString(); } } </code></pre> <p>WndProc in the Form class.</p> <pre><code> protected override void WndProc(ref Message m) { if (m.Msg == Values.MESSAGE_ASYNC) { switch (m.LParam.ToInt32()) { case Values.FD_READ: WS2.Receive(); break; case Values.FD_WRITE: break; case Values.FD_CLOSE: WS2.Close(); break; default: break; } } else { base.WndProc(ref m); } } </code></pre> <p>Get Handle:</p> <pre><code> public int GetHandle { get { if (this.InvokeRequired) { return (int)this.Invoke((GetHandleDelegate)delegate { return this.Handle.ToInt32(); }); } return this.Handle.ToInt32(); } } private delegate int GetHandleDelegate(); </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload