zoukankan      html  css  js  c++  java
  • C# Socket

    using UnityEngine;

    using System.Collections;

    using System.Net;

    using System.Net.Sockets;

    using System;

    using System.Text;

    public class ClientAsyncSocket : MonoBehaviour {

     

     

     

    /// <summary>

    /// Ayncs the connect socket.

    /// </summary>

    /// <returns>

    /// The connect socket.

    /// </returns>

    /// <param name='server'>

    /// Server:""http://113.11.205.94"

    /// </param>

    /// <param name='port'>

    /// Port:80

    /// </param>

     

    private static void ayncConnectSocket(string server,int port){

     

    //   Version 0

    //IPHostEntry    hostEntry = null;

    //

    //   

    //        hostEntry = Dns.GetHostEntry(server);

    //

    //   foreach(IPAddress address in hostEntry.AddressList)

    //        {

    //            IPEndPoint ipe = new IPEndPoint(address, port);

    //            Socket tempSocket = 

    //                new Socket(ipe.AddressFamily, socketType, protocolType);

    //tempSocket.BeginConnect(ipe,new AsyncCallback(ConnectCallback),tempSocket);

    //

    //        }

    //   Version 0

     

    IPHostEntry    hostEntry=Dns.GetHostEntry(server);

    IPAddress address=hostEntry.AddressList[0];

    IPEndPoint ipe = new IPEndPoint(address, port);

    Socket s=new Socket(ipe.AddressFamily,SocketType.Stream,ProtocolType.Tcp);

        }

     

    private static void ConnectCallback(IAsyncResult ar)

    {

    try {

    Sockets=(Socket)ar.AsyncState;

    s.EndConnect(ar);

     

    catch (Exception ex) {

    Debug.Log(ex.ToString());

    }

     

    }

    /// <summary>

    /// Asyncs the socket send.

    /// </summary>

    /// <param name='client'>

    /// Client:Socket 

    /// </param>

    /// <param name='data'>

    /// Data: Send Data

    /// </param>

    private static void asyncSocketSend(Socket client,string  data)

    {

    try {

    // 譬シ蠑剰スャ謐「.  

    byte[] byteData = Encoding.ASCII.GetBytes(data);  

     

     

    client.BeginSend(byteData, 0, byteData.Length, 0,  

    new AsyncCallback(SendCallback), client);  

     

    catch (Exception ex) {

    Debug.Log(ex.ToString());

    }

     

     

    }

    private static void SendCallback(IAsyncResult ar)  

    {   

    try{

    // 莉市tate蟇ケ雎。荳ュ闔キ蜿穆ocket  

    Socket client = (Socket)ar.AsyncState;  

     

     

    int bytesSent = client.EndSend(ar);  

    Debug.Log("Sent {0} bytes to server."+ bytesSent);  

     

    catch (Exception e) {

    Debug.Log(e.ToString());

    }  

    }

     

    private static void ayncSocketReceive(Socket client){

    try{

     

    StateObject state = new StateObject();  

    state.workSocket = client;  

     

    // 莉手ソ懃ィ狗岼譬㍽磁謾カ謨ー謐ョ.  

    client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,  

    new AsyncCallback(ReceiveCallback), state);  

    catch (Exception e) {

    Console.WriteLine(e.ToString());

    }

    }

     

    privatestaticstring response=string.Empty;

     

    private static void ReceiveCallback(IAsyncResult ar)  

    {   

    try{

     

    // 莉手セ灘Ⅶ蜿よ焚蠑よュ・state蟇ケ雎。荳ュ闔キ蜿穆tate蜥茎ocket蟇ケ雎。  

    StateObject state = (StateObject)ar.AsyncState;  

    Socket client = state.workSocket;  

     

    //莉手ソ懃ィ玖ョセ螟㍻ッサ蜿匁焚謐ョ  

    int bytesRead = client.EndReceive(ar);  

     

    if (bytesRead > 0)  

    {   

     

    state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead));  

     

     

    client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,  

    new AsyncCallback(ReceiveCallback), state);  

    }   

    else 

    {   

     

    if (state.sb.Length > 1)  

    {   

    response = state.sb.ToString();  

    }   

     

    }   

    catch (Exception e) {

    Debug.Log(e.ToString());

    }

    }

     

    }

    public class StateObject {

    // Client socket.

    public Socket workSocket = null;

    // Size of receive buffer.

    public const int BufferSize = 256;

    // Receive buffer.

    public byte[] buffer = new byte[BufferSize];

    // Received data string.

    public StringBuilder sb = new StringBuilder();

    }

     

  • 相关阅读:
    Python模块之logging
    Python模块之configparser
    python序列化模块 json&&pickle&&shelve
    Python模块之hashlib
    最短路之Floyd(多源)HDU 1874
    Python类知识学习时的部分问题
    第9章 Python文件操作目录
    第8章 Python类中常用的特殊变量和方法目录
    第7章 Python类型、类、协议目录
    第6章 Python中的动态可执行方法目录
  • 原文地址:https://www.cnblogs.com/kuangwu/p/3282385.html
Copyright © 2011-2022 走看看