/// <summary> /// parse input data /// </summary> /// <param name="url"></param> /// <param name="callback"></param> /// <param name="ud"></param> public void SocketRequest(int actionId, INetCallback callback, object userData, bool bShowLoading) { if (mSocket == null) { string strUrl = NetWriter.GetUrl(); Debug.Log("url" + strUrl); string[] arr = strUrl.Split(new char[] { ':' }); int nPort = int.Parse(arr[1]); mSocket = new SocketConnect(arr[0], nPort); } NetWriter writer = NetWriter.Instance; writer.writeInt32("actionId", actionId); byte[] data = NetWriter.Instance.PostData(); SocketPackage package = new SocketPackage(); package.FuncCallback = callback; package.UserData = userData; package.MsgId = NetWriter.MsgId - 1; package.ActionId = actionId; package.HasLoading = bShowLoading; package.SendTime = DateTime.Now; NetWriter.resetData(); if (bShowLoading) { RequestDelegate(Status.eStartRequest); } mSocket.Request(data, package); }
private void StartSocket(string host, string port) { if (_socket == null) { _socket = new SocketConnect(host, int.Parse(port)); } }
private async Task <string> readLine() { SocketConnect.ReceiveBufferSize = BlockSize; var content = new StringBuilder(); var buffers = new byte[BlockSize]; while (true) { var i = SocketConnect.Receive(buffers); content.Append(Encoding.UTF8.GetString(buffers)); if (i < BlockSize) { break; } } Content = content.ToString(); content.Clear(); var args = Content.Split('\n'); if (args.Length > 2) { Content = args[args.Length - 2]; } else { Content = args[0]; } if (Content.Substring(3, 1).Equals("")) { return(await readLine()); } return(Content); }
public void close() { getMSGFlag = false; mySocket.Close(); st = null; //thread.Abort(); }
/// <summary> /// parse input data /// </summary> /// <param name="gameAction"></param> /// <param name="actionParam"></param> /// <param name="formater"></param> /// <param name="bShowLoading"></param> private void SocketRequest(GameAction gameAction, ActionParam actionParam, IHeadFormater formater, bool bShowLoading) { if (mSocket == null) { string strUrl = NetWriter.GetUrl(); string[] arr = strUrl.Split(new char[] { ':' }); int nPort = int.Parse(arr[1]); mSocket = new SocketConnect(arr[0], nPort, formater); } gameAction.Head.MsgId = NetWriter.MsgId - 1; SocketPackage package = new SocketPackage(); package.MsgId = gameAction.Head.MsgId; package.ActionId = gameAction.ActionId; package.Action = gameAction; package.HasLoading = bShowLoading; package.SendTime = DateTime.Now; byte[] data = gameAction.Send(actionParam); NetWriter.resetData(); if (bShowLoading) { RequestDelegate(Status.eStartRequest); } mSocket.Send(data, package); }
/// <summary> /// parse input data /// </summary> /// <param name="gameAction"></param> /// <param name="actionParam"></param> /// <param name="formater"></param> /// <param name="bShowLoading"></param> private void SocketRequest(GameAction gameAction, Google.Protobuf.IMessage pbData, IHeadFormater formater, bool bShowLoading) { if (mSocket == null) { string url = NetWriter.GetUrl(); string[] arr = url.Split(new char[] { ':' }); if (arr.Length != 2) { Debug.LogError("Url is error:" + url); return; } int nPort = int.Parse(arr[1]); mSocket = new SocketConnect(arr[0], nPort, formater); } gameAction.Head.MsgId = NetWriter.MsgId - 1; SocketPackage package = new SocketPackage(); package.MsgId = gameAction.Head.MsgId; package.ActionId = gameAction.ActionId; package.ActionRespId = gameAction.Head.ActionRespId; package.Action = gameAction; package.HasLoading = bShowLoading; package.SendTime = DateTime.Now; byte[] data = gameAction.Send(pbData); NetWriter.resetData(); if (bShowLoading) { RequestDelegate(Status.eStartRequest); } mSocket.Send(data, package); }
/// <summary> /// 客户端连接事件 /// </summary> void onSocketConnect(Guid connId, SocketAsyncEventArgs e) { var userSocket = new UserSocketEventArgs(e); dicSocketEventArgs.AddOrUpdate(connId, userSocket, (id, t) => { return(userSocket); }); SocketConnect?.Invoke(connId); }
// Update is called once per frame void Update() { if (Input.GetMouseButton(0)) { startTime = Time.time; } ASName = SceneManager.GetActiveScene().name; //没有处在第一场景并且10秒之内没有反应 if (ASName != "FirstScene" && ((Time.time - startTime) > 10.0f)) { //如果提交之后 if (NetworkData.isSubmit) { Debug.Log("TimeSceneControl" + "Update"); //发送断开连接信号 SocketConnect.getSocketInstance().SendInt(NetworkData.SENDDISCONNECT); SocketConnect.getSocketInstance().close(); //结束展示 NetworkData.isSubmit = false; } //卸载当前场景 SceneManager.UnloadSceneAsync(SceneManager.GetActiveScene()); //加载第一场景 SceneManager.LoadScene("FirstScene"); } }
public void Close() { if (mSocket != null) { mSocket.Close(); mSocket = null; } }
public async Task <int> Send(string command) { var buffers = Encoding.UTF8.GetBytes(command + "\r\n"); SocketConnect.SendBufferSize = buffers.Length; SocketConnect.Send(buffers); return(await readReply()); }
//单例模式 public static SocketConnect getSocketInstance()//获取SocketText对象 { if (st == null) { st = new SocketConnect(); } return(st); }
/// <summary> /// 浏览器tcp转发 /// </summary> /// <param name="client"></param> private async Task TcpHandlerAsync(ConnectionContext browser) { try { //browser-->5,1,0 var firstPack = (await browser.Transport.Input.ReadAsync()).Buffer; if (string.Join(",", firstPack.ToArray()) != "5,1,0") { throw new Exception("proxy handshake faild"); } browser.Transport.Input.AdvanceTo(firstPack.GetPosition(firstPack.Length)); //server-->5,0 //发5 0 回到浏览器 await browser.Transport.Output.WriteAsync(new byte[] { 5, 0 }); //browser-->address port var secondPack = (await browser.Transport.Input.ReadAsync()).Buffer; if (!Socket5Utility.TryParse(secondPack.ToArray(), out var socket5Result)) { throw new Exception("parse socket5 proxy infomation faild"); } browser.Transport.Input.AdvanceTo(secondPack.GetPosition(secondPack.Length)); await using SocketConnect target = new SocketConnect(); await target.ConnectAsync(remoteAddress, remotePort, System.Text.Encoding.UTF8.GetString(socket5Result.Address), socket5Result.Port); logger.LogInformation($"连接到{System.Text.Encoding.UTF8.GetString(socket5Result.Address)}:{socket5Result.Port}"); Task taskRecvBrowser = Task.Run(async() => { //获取浏览器数据 await foreach (var browserData in GetRecvDataAsync(browser)) { //发送数据到服务器 await target.SendAsync(browserData); } }); Task taskRecvServer = Task.Run(async() => { //接收服务器数据 await foreach (var browserData in target.hubConnection.StreamAsync <byte[]>("GetTargetServerData")) { //发送数据到浏览器 await browser.Transport.Output.WriteAsync(browserData); } }); await Task.WhenAll(taskRecvBrowser, taskRecvServer); } catch (Exception ex) { logger.LogError(ex, $"处理TcpHandlerAsync出现错误:{ex.InnerException?.Message ?? ex.Message}"); } }
public void AddEvent(SocketConnect.ClientEvent e) { if (e != null) { lock (this.events) { this.events.Enqueue(e); } } }
private void OnApplicationQuit() { Debug.Log("退出程序连接"); //程序退出时关闭连接 if (SocketConnect.getSocketInstance() != null) { Debug.Log("OnApplicationQuit"); SocketConnect.getSocketInstance().close(); } }
public bool StopService() { serviceState = ENetServiceState.Stop; if (_socketCon != null) { _socketCon.Close(); _socketCon = null; } return(true); }
//关闭连接 public void Close() { setNetStatus(2); if (_socketCon != null) { _socketCon.Close(); _socketCon = null; } SendreceiveManage.getInstance().clear(); }
//关闭连接 public void Close() { setNetStatus(2); if (_socketCon != null) { _socketCon.Close(); _socketCon = null; } MessageQueueManage.getInstance().clearData(); }
//关闭连接 public void Close() { setNetStatus(2); if (_socketCon != null) { _socketCon.Close(); _socketCon = null; } recDataQueue.Clear(); sendMemory.Clear(); pbnoCurr.setNull(); }
private void ConnectGuns() { BGuns.ToList().ForEach(g => { string ip = g.IP; int port = g.Port; socket = new SocketConnect(ip, port); socket.EventConnected += Socket_EventConnected; socket.EventCommunicationed += Socket_EventCommunicationed; socket.EventTighteningResultSubscribe += Socket_EventTighteningResultSubscribe; socket.EventTighteningResultRecived += Socket_EventTighteningResultRecived; socket.EventTighteningResultNoSubscribe += Socket_EventTighteningResultNoSubscribe;; socket.EventDisConnected += Socket_EventDisConnected; g.connect = socket; socket.Start(); }); }
void RotateModel(float moveX, float moveY) { moveX /= 5.0f; Move_Y /= 10.0f; up = model.worldToLocalMatrix * model.up; right = model.worldToLocalMatrix * model.right; model.Rotate(up, -moveX, Space.World); model.Rotate(right, moveY, Space.World); if (NetworkData.isSubmit) { Debug.Log("RotateModel"); //发送数据 SocketConnect.getSocketInstance().SendInt(NetworkData.SENDROTATION); SocketConnect.getSocketInstance().SendFloat(model.eulerAngles.x); SocketConnect.getSocketInstance().SendFloat(model.eulerAngles.y); SocketConnect.getSocketInstance().SendFloat(model.eulerAngles.z); } }
//点击提交事件 void OnSubmitClick(GameObject go) { Debug.Log("点击提交"); if (flag) //协程已经启动 { Debug.Log(" submit coroutine return "); return; } Debug.Log("=========Connect============"); //获得连接实例 sc = SocketConnect.getSocketInstance(); //这是提交信号为true NetworkData.isSubmit = true; //发送请求链接信号 sc.SendInt(NetworkData.SENDCONNECT); flag = true; StartCoroutine(WaitSign()); }
public void ConnectedServer() { UnityEngine.NetworkReachability state = UnityEngine.Application.internetReachability; if (state != UnityEngine.NetworkReachability.NotReachable) { NetWriter.SetUrl(serverIp + ":" + port); //if (mSocket == null) { string strUrl = NetWriter.GetUrl(); string[] arr = strUrl.Split(new char[] { ':' }); int nPort = int.Parse(arr[1]); mSocket = new SocketConnect(arr[0], nPort, HeadFormater, timeOut, hearInterval); } mSocket.EnsureConnected(); } else { QueueEvent(EventDef.ServerConnectFailure, "当前网络没有连接"); } }
//连接服务器 public bool Connect() { acceptNet = true; Close(); _socketCon = new SocketConnect(host, port); if (_socketCon.Open()) { Debug.Log("连接服务器成功!"); //20150912 add//////////////////////////////////////// thread = new Thread(new ThreadStart(CheckReceive)); thread.Start(); //end//////////////////////////////////////////////// return(true); } Debug.LogError("连接服务器失败!"); return(false); }
//连接服务器 private bool Connect() { acceptNet = true; StopService(); _socketCon = new SocketConnect(host, port); if (_socketCon.Open()) { Debug.Log("连接服务器成功!"); serviceState = ENetServiceState.Running; thread = new Thread(new ThreadStart(CheckReceive)); thread.Start(); return(true); } Debug.LogError("连接服务器失败!"); return(false); }
private void SocketRequest(int actionId, int actionRespId, LuaFramework.ByteBuffer body, LuaInterface.LuaFunction callback, IHeadFormater formater, bool bShowLoading) { if (mSocket == null) { string url = NetWriter.GetUrl(); string[] arr = url.Split(new char[] { ':' }); if (arr.Length != 2) { Debug.LogError("Url is error:" + url); return; } int nPort = int.Parse(arr[1]); mSocket = new SocketConnect(arr[0], nPort, formater); } SocketPackage package = new SocketPackage(); package.MsgId = NetWriter.MsgId - 1; package.ActionId = actionId; package.ActionRespId = actionRespId; package.HasLoading = bShowLoading; package.SendTime = DateTime.Now; package.Callback = callback; NetWriter writer = NetWriter.Instance; SetActionHead(actionId, body); writer.SetBodyData(body.ToBytes()); byte[] data = writer.PostData(); NetWriter.resetData(); if (bShowLoading) { RequestDelegate(Status.eStartRequest); } mSocket.Send(data, package); }
/// <summary> /// 监听网站目标服务器 /// </summary> public static void ProcessTargetServer(ConnectionContext browser, SocketConnect target) { Task.Run(async() => { try { while (true) { var readResult = await target.PipeReader.ReadAsync(); if (!readResult.Buffer.IsEmpty) { SequencePosition position = readResult.Buffer.Start; if (readResult.Buffer.TryGet(ref position, out var memory)) { //发往浏览器 await browser.Transport.Output.WriteAsync(memory); target.PipeReader.AdvanceTo(readResult.Buffer.GetPosition(memory.Length)); } } else { if (readResult.IsCanceled || readResult.IsCompleted) { break; } } } await target.PipeReader.CompleteAsync(); } catch (Exception ex) { Console.WriteLine(ex.Message); } }); }
internal static void InvokeSocketConnect(SocketConnectEventArgs e) { SocketConnect?.Invoke(e); }
/// <summary> /// parse input data /// </summary> /// <param name="gameAction"></param> /// <param name="userData"></param> /// <param name="formater"></param> /// <param name="bShowLoading"></param> private void SocketRequest(GameAction gameAction, object userData, IHeadFormater formater, bool bShowLoading) { if (mSocket == null) { string strUrl = NetWriter.GetUrl(); string[] arr = strUrl.Split(new char[] { ':' }); int nPort = int.Parse(arr[1]); mSocket = new SocketConnect(arr[0], nPort, formater); } gameAction.Head.MsgId = NetWriter.MsgId - 1; SocketPackage package = new SocketPackage(); package.UserData = userData; package.MsgId = gameAction.Head.MsgId; package.ActionId = gameAction.ActionId; package.Action = gameAction; package.HasLoading = bShowLoading; package.SendTime = DateTime.Now; byte[] data = gameAction.Send(userData); NetWriter.resetData(); if (bShowLoading) { RequestDelegate(Status.eStartRequest); } mSocket.Send(data, package); }
/// <summary> /// 处理浏览器 /// </summary> /// <param name="browser"></param> /// <returns></returns> public static void ProcessBrowserAsync(ConnectionContext browser) { Task.Run(async() => { //最终网站 SocketConnect target = new SocketConnect(); try { while (true) { System.IO.Pipelines.ReadResult result = await browser.Transport.Input.ReadAsync(); if (!result.Buffer.IsEmpty) { var message = Message.ParsePack(result.Buffer.ToArray()); if (message.Item1 != null) { var data = message.Item1.Content; //var data = Crypto.DecryptAES(message.Item1.Content); Socket5Info socket5Info = new Socket5Info(); if (socket5Info.TryParse(data)) { await target.ConnectAsync(System.Text.Encoding.UTF8.GetString(socket5Info.Address), socket5Info.Port); //连接到服务器 //var ipEndPoint = await GetIpEndPointAsync(System.Text.Encoding.UTF8.GetString(socket5Info.Address), socket5Info.Port); //if(ipEndPoint == null) //{ // break; //} //await target.ConnectAsync(ipEndPoint.Address,ipEndPoint.Port); byte[] sendData = new byte[] { 0x05, 0x00, 0x00, 0x01, 0x7f, 0x00, 0x00, 0x01, 0x1f, 0x40 }; //发送确认到浏览器 await browser.Transport.Output.WriteAsync(sendData); ProcessTargetServer(browser, target); } else { //发送数据到目标服务器 await target.TcpClient.Client.SendAsync(data, SocketFlags.None); } browser.Transport.Input.AdvanceTo(result.Buffer.GetPosition(message.Item2)); } else { browser.Transport.Input.AdvanceTo(result.Buffer.GetPosition(0)); } } else { if (result.IsCompleted || result.IsCanceled) { break; } } } await browser.Transport.Input.CompleteAsync(); } catch (Exception ex) { Console.WriteLine(ex.Message); } }); }
public void setConnect(SocketConnect connect) { mConnect = connect; }
public Eventer(SocketConnect s) { socket = s; events = new Queue<SocketConnect.ClientEvent>(); }
/// <summary> /// parse input data /// </summary> /// <param name="gameAction"></param> /// <param name="actionParam"></param> /// <param name="formater"></param> /// <param name="bShowLoading"></param> private void SocketRequest(GameAction gameAction, ActionParam actionParam, IHeadFormater formater, bool bShowLoading) { if (mSocket == null) { string url = NetWriter.GetUrl(); string[] arr = url.Split(new char[] { ':' }); if (arr.Length != 2) { Debug.LogError("Url is error:" + url); return; } int nPort = int.Parse(arr[1]); mSocket = new SocketConnect(arr[0], nPort, formater); } gameAction.Head.MsgId = NetWriter.MsgId - 1; SocketPackage package = new SocketPackage(); package.MsgId = gameAction.Head.MsgId; package.ActionId = gameAction.ActionId; package.Action = gameAction; package.HasLoading = bShowLoading; package.SendTime = DateTime.Now; byte[] data = gameAction.Send(actionParam); NetWriter.resetData(); if (bShowLoading) { RequestDelegate(Status.eStartRequest); } mSocket.Send(data, package); }
public static void InvokeSocketConnect(SocketConnectEventArgs e) => SocketConnect?.Invoke(e);
public PsetForm(SocketConnect connect) { this.connect = connect; InitializeComponent(); }