UNITY之使用Socket與java伺服器通訊
---------------------------客戶端----------------------------------------
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Net;
- using System.Net.Sockets;
- using System.Threading;
- using UnityEngine;
- /*
- *
-
*Socket客戶端通訊類
- *
- * lm
- */
- publicclass SocketHelper
- {
- privatestatic SocketHelper socketHelper=new SocketHelper();
- private Socket socket;
- //餓漢模式
- publicstatic SocketHelper GetInstance()
- {
- return socketHelper;
- }
- private SocketHelper() {
-
//採用TCP方式連線
- socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- //伺服器IP地址
- IPAddress address = IPAddress.Parse("127.0.0.1");
- //伺服器埠
- IPEndPoint endpoint = new IPEndPoint(address,8000);
- //非同步連線,連線成功呼叫connectCallback方法
-
IAsyncResult result = socket.BeginConnect(endpoint, new
- //這裡做一個超時的監測,當連線超過5秒還沒成功表示超時
- bool success = result.AsyncWaitHandle.WaitOne(5000, true);
- if (!success)
- {
- //超時
- Closed();
- Debug.Log("connect Time Out");
- }
- else
- {
- //與socket建立連線成功,開啟執行緒接受服務端資料。
- Thread thread = new Thread(new ThreadStart(ReceiveSorket));
- thread.IsBackground = true;
- thread.Start();
- }
- }
- privatevoid ConnectCallback(IAsyncResult asyncConnect)
- {
- Debug.Log("connect success");
- }
- privatevoid ReceiveSorket()
- {
- //在這個執行緒中接受伺服器返回的資料
- while (true)
- {
- if (!socket.Connected)
- {
- //與伺服器斷開連線跳出迴圈
- Debug.Log("Failed to clientSocket server.");
- socket.Close();
- break;
- }
- try
- {
- //接受資料儲存至bytes當中
- byte[] bytes = newbyte[4096];
- //Receive方法中會一直等待服務端回發訊息
- //如果沒有回發會一直在這裡等著。
- int i = socket.Receive(bytes);
- if (i <= 0)
- {
- socket.Close();
- break;
- }
- Debug.Log(System.Text.Encoding.Default.GetString(bytes));
- }
- catch (Exception e)
- {
- Debug.Log("Failed to clientSocket error." + e);
- socket.Close();
- break;
- }
- }
- }
- //關閉Socket
- publicvoid Closed()
- {
- if (socket != null && socket.Connected)
- {
- socket.Shutdown(SocketShutdown.Both);
- socket.Close();
- }
- socket = null;
- }
- //向服務端傳送一條字串
- //一般不會發送字串 應該是傳送資料包
- publicvoid SendMessage(string str)
- {
- byte[] msg = Encoding.UTF8.GetBytes(str);
- if (!socket.Connected)
- {
- socket.Close();
- return;
- }
- try
- {
- IAsyncResult asyncSend = socket.BeginSend(msg, 0, msg.Length, SocketFlags.None, new AsyncCallback(SendCallback), socket);
- bool success = asyncSend.AsyncWaitHandle.WaitOne(5000, true);
- if (!success)
- {
- socket.Close();
- Debug.Log("Failed to SendMessage server.");
- }
- }
- catch
- {
- Debug.Log("send message error");
- }
-
相關推薦
UNITY之使用Socket與java伺服器通訊
---------------------------客戶端---------------------------------------- using System; using System.Collections.Generic;
Unity3d使用Socket與java伺服器通訊
---------------------------客戶端---------------------------------------- using System; using System.Collections.Generic; using System.Linq
Android socket 與電腦伺服器通訊 模擬機上可以訪問 手機上不能訪問
本人因需要做一個手機與電腦通訊的app,先做了一個小例子測試一下,在模擬機上可以訪問電腦伺服器,手機上就連不上,上網查了很多辦法: 1.增加app中上網許可權 2.關閉電腦防火牆 3.使用無線路由,電腦和手機都連線無線路由,處於同一網段 等等,這些都不行,還是連不上。
使用C語言socket實現windows pc與ftp伺服器通訊---socket實現ftp客戶端
code // Client.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include <iostream> #include <fstream> #include <WinSock2.h&
Android與Java 伺服器使用Socket協議實現Json資料傳輸
Json資料的操作非常簡單,總的來說就是幾個物件的賦值。新建Json物件時,可以先新建一個名為root的 Json物件作為最後要傳送出去的Json物件,然後再往root中新增Json鍵值對或者Json陣列等資料。 用Socket協議傳送Json資料時
cocos2d-x客戶端與Java伺服器的通訊(一)
(⊙o⊙)…貌似自己已經有一段時間沒有寫部落格了,其實主要原因還是覺得自己水平有限,加上上班實在是太忙,實在抽不出時間來寫部落格。言歸正傳,大家都知道,在網路遊戲開發中, 網路通訊一直是個比較大的難題,一個伺服器可能要同時處理幾千上萬甚至上百萬的使用者資料,當然,僅僅是通訊
Android客戶端與java伺服器端的Socket連線
開發十年,就只剩下這套架構體系了! >>>
每天學一點Scala之Scala與Java的區別?
scala java 函數式編程 A、Scala是編譯型語言,可以隨意調用Java代碼;B、 Scala函數式編程語言,在scala世界裏,函數才是一等公民;函數可以作為參數進行傳遞,可以賦值給變量,可以作為返回值進行返回scala中,具有嵌套函數、匿名函數、高階函數、偏函數scala支持閉包本
Unity之Update與FixedUpdate區別
str 點擊 區別 com unity 3-0 auto ongui info 下面這段代碼演示遊戲暫停 using UnityEngine; using System.Collections; public class GamePauseTest : M
談一談socket與java
res socket 解決方案 sts 構造 ron sta bsp 直接 用java中socket實現socket聊天 1, 什麽是socket Socket 是指網絡套接字,什麽是套接字呢? 這是網絡上一種端對端的網絡協議,端口就是進程號,socket在
Android 客戶端Socket 與 Java服務端ServerSocket
Socket程式設計 一、Java網路程式設計基礎知識 1、兩臺計算機間進行通訊需要以下三個條件: 1)、 IP地址(例
React總結篇之七_Redux和伺服器通訊
React元件訪問伺服器的方式 Redux架構下訪問伺服器的方式 一、React元件訪問伺服器 代理功能訪問API React元件訪問伺服器的生命週期 以顯示天氣預報為示例: 通過伺服器API獲得天氣情況資料 展示天氣情況資料 分兩個步驟完成:(1)
C #與java進行通訊?傳輸字串為例。
C#端程式碼: String contents =“hello 這是C#傳來的資料”;//請求string uri = "http://192.168.1.149:8080/專案名/TestServlte";HttpWebRequest request = HttpWebR
Linux下Socket客戶端伺服器通訊
Linux/Unix系統一切都是檔案 Linux系統中,存在一個虛擬檔案系統VFS,把一切實體視為檔案,包括普通檔案、音視訊、輸入輸出裝置等。這樣,作業系統可以可以提供統一的介面來操作任何實體。每個“檔案”建立後,都有一個檔案描述符(File Describer),檔案描述符是一個正
Scala學習5之scala與java的不同之總結1
1.scala不同宣告變數的具體型別,只需要宣告是var還是val,即變數或不變數,由編譯器自動判斷。而java需要具體宣告,比如Int,String 2.scala函式宣告返回值是宣告在後面,而且可以不用return,直接在最後寫返回變數或常量即可。比如 def
微信小程式之前端與java後臺進行資料互動
最近小程式挺火的,準備寫個小程式試試,我會將我遇到的問題和我認為有用的記錄下來,但是隻瞭解java,並不太懂PHP,雖然說語言都是相通的(我也不知道誰說的),反正還是用Java寫後臺吧,1.申請伺服器+域名3.準備使用ssm框架進行後臺開發,先進行前端後臺資料互動試試後臺ja
iOS遠端真機之iTunes與iPhone的通訊協議usbmuxd解析
最開始研究與iPhone通訊, 都會想當然的google下usb協議, 必經iphone是通過usb線連線到電腦. 其實不然, iTunes是通過TCP協議與iPhone通訊的 usbmuxd iTunes使用一種叫”usbmux
Android與Java伺服器端資料互動和Java物件轉換成JSON物件
Ticket封裝成一個類 package com.model; public class Ticket { private int ticket_id; private int price; private int user
cisco路由器IPSECVPN之總部與一個分部通訊配置
環境:總部一個網段、分部一個網段、兩端固定ip地址。如果分部是動態ip的情況下,就將總部的set peer 的對端ip地址設定為0.0.0.0即可滿足總部為固定,分部為動態ip的情況。 路由器設定之Site to Site VPN設定&詳細幀中繼配置 首先說明一下,幀中繼一般都租
客戶端與服務端互動之socket與http協議的比較
webservice是基於http協議的soap協議的封裝和補充,為的是提供一個公共穩定的介面。 區別: (1 )資料傳輸方式 1.1 socket傳輸的定義和其特點 所謂socket通常也稱作"套接字",實現伺服器和客戶端之間的物理連線,並進行資料傳輸,主要有udp和tcp兩個協議。socket處於網路