private string PostToSyncServer(string subUrl, string sentXml) { string result = ""; try { string str = SocketTool.GetUrl(); string url_Imp = SocketTool.GetUrl_Imp(); if (MeetingID.ToLower().StartsWith("i")) { str = url_Imp; } HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(str + subUrl); byte[] bytes = Encoding.UTF8.GetBytes(sentXml); httpWebRequest.Method = "POST"; httpWebRequest.ContentType = "text/xml; encoding='utf-8'"; httpWebRequest.ContentLength = bytes.Length; Stream requestStream = httpWebRequest.GetRequestStream(); requestStream.Write(bytes, 0, bytes.Length); requestStream.Close(); WebResponse response = httpWebRequest.GetResponse(); requestStream = response.GetResponseStream(); StreamReader streamReader = new StreamReader(requestStream); result = streamReader.ReadToEnd(); streamReader.Close(); requestStream.Close(); response.Close(); return(result); } catch (Exception ex) { LogTool.Debug(ex); return(result); } }
private string PostToSyncServer(string subUrl, string sentXml) { string getXml = ""; try { string SyncServerUrl = SocketTool.GetUrl(); string SyncServerUrl_Imp = SocketTool.GetUrl_Imp(); if (MeetingID.ToLower().StartsWith("i") == true) { SyncServerUrl = SyncServerUrl_Imp; } HttpWebRequest request = (HttpWebRequest)WebRequest.Create(SyncServerUrl + subUrl); string data = sentXml; byte[] postData = Encoding.UTF8.GetBytes(data); request.Method = "POST"; request.ContentType = "text/xml; encoding='utf-8'"; request.ContentLength = postData.Length; Stream dataStream = request.GetRequestStream(); dataStream.Write(postData, 0, postData.Length); dataStream.Close(); WebResponse response = request.GetResponse(); dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); getXml = reader.ReadToEnd(); reader.Close(); dataStream.Close(); response.Close(); } catch (Exception ex) { LogTool.Debug(ex); } return(getXml); }
// 外界只能使用靜態方法取得實例 public static SocketClient GetInstance(string _MeetingID, string _UserID, string _UserName, bool InitToSync) { bool SyncServerIsIP = false; IPAddress ip = default(IPAddress); IPAddress.TryParse(new Uri(WsTool.GetSyncServer_URL()).DnsSafeHost, out ip); if (IPAddress.Equals(default(IPAddress), ip) == false) { SyncServerIsIP = true; } if (SyncServerIsIP == false && NetworkTool.GetDomainNameIP(WsTool.GetSyncServer_URL(), 1000).Equals("") == true && NetworkTool.GetDomainNameIP(WsTool.GetSyncServerImp_URL(), 1000).Equals("") == true) { return(null); } // 先判斷目前有沒有實例,沒有的話才開始 lock, // 此次的判斷,是避免在有實例的情況,也執行 lock ,影響效能 if (instance == null) { // 避免多執行緒可能會產生兩個以上的實例,所以 lock lock (thisLock) { // lock 後,再判斷一次目前有無實例 // 此次的判斷,是避免多執行緒,同時通過前一次的 null == instance 判斷 if (instance == null) { Init_Instance(_MeetingID, _UserID, _UserName, InitToSync); } else { if (MeetingID.Equals(_MeetingID) == false) { Init_Instance(_MeetingID, _UserID, _UserName, InitToSync); } else { int i = 1; while (i <= 10) { bool IsConnected = instance.GetIsConnected(); if (instance != null && IsConnected == true) { break; } else if (i == 10) { Init_Instance(_MeetingID, _UserID, _UserName, InitToSync); } Thread.Sleep(10); i++; } } } } } else { lock (thisLock) { // lock 後,再判斷一次目前有無實例 // 此次的判斷,是避免多執行緒,同時通過前一次的 null == instance 判斷 if (instance == null) { Init_Instance(_MeetingID, _UserID, _UserName, InitToSync); } else { if (MeetingID.Equals(_MeetingID) == false) { Init_Instance(_MeetingID, _UserID, _UserName, InitToSync); } else { //if (instance.GetIsConnected() == false) // Init_Instance(_MeetingID, _UserID, _UserName, InitToSync); int i = 1; while (i <= 10) { bool IsConnected = instance.GetIsConnected(); if (instance != null && IsConnected == true) { break; } else if (i == 10) { Init_Instance(_MeetingID, _UserID, _UserName, InitToSync); } Thread.Sleep(10); i++; } } } } } //Thread.Sleep(100); return(instance); }
public static SocketClient GetInstance(string _MeetingID, string _UserID, string _UserName, bool InitToSync) { if (NetworkTool.GetDomainNameIP(WsTool.GetSyncServer_URL(), 1000).Equals("") && NetworkTool.GetDomainNameIP(WsTool.GetSyncServerImp_URL(), 1000).Equals("")) { return(null); } if (instance != null) { lock (thisLock) { if (instance == null) { Init_Instance(_MeetingID, _UserID, _UserName, InitToSync); } else if (!MeetingID.Equals(_MeetingID)) { Init_Instance(_MeetingID, _UserID, _UserName, InitToSync); } else { for (int i = 1; i <= 10; i++) { bool isConnected = instance.GetIsConnected(); if (instance != null && isConnected) { break; } if (i == 10) { Init_Instance(_MeetingID, _UserID, _UserName, InitToSync); } Thread.Sleep(10); } } } } else { lock (thisLock) { if (instance == null) { Init_Instance(_MeetingID, _UserID, _UserName, InitToSync); } else if (!MeetingID.Equals(_MeetingID)) { Init_Instance(_MeetingID, _UserID, _UserName, InitToSync); } else { for (int j = 1; j <= 10; j++) { bool isConnected2 = instance.GetIsConnected(); if (instance != null && isConnected2) { break; } if (j == 10) { Init_Instance(_MeetingID, _UserID, _UserName, InitToSync); } Thread.Sleep(10); } } } } return(instance); }