客戶端的例子過程比較簡單
1、先建立socket
2、建立connect
3、接收/傳送
注意是接收是阻塞模式
客戶端**:
chatclient.cpp
/*
* chatclient.cpp
* * created on: 2012-9-29
* author: root
*/#include "clientsocket.h"
#include "socketexception.h"
#include #include #include "encoder.h"
#include "decoder.h"
using namespace std;
int main() ";
clientsocket clientsocket("127.0.0.1",888000);
// string massage=encoder::encoder(strvalue);
// cout << decoder::decoder(massage) << endl;
while(1)
}catch (socketexception& e)
return 0;
}
decoder.h 解析資料
解析資料是必需的,因為socket機制會優先傳送的機制,從而導致粘包現在(將兩次小資料當作一次來),其中有兩種解決方法,一種是設定setsocketopt,不支援nagle演算法,第二就是進行對包封裝,一般是計算資料長度,並加入到包頭,解析時就先解析包頭的長度,接下來就一直接收到該 長度就可得到「剛好」的資料
/*
* decoder.h
* * created on: 2012-10-18
* author: root
*/#ifndef decoder_h_
#define decoder_h_
#include class decoder ;
#endif /* decoder_h_ */
decoder.cpp 解析資料實現類
/*
* decoder.cpp
* * created on: 2012-10-18
* author: root
*/#include "decoder.h"
#include "typeconvert.h"
decoder::decoder()
decoder::~decoder()
std::string decoder::decoder(std::string message)
std::string datalengstr = message.substr(0, 4);
int dataleng = typeconvert::strint2int(datalengstr);
if (dataleng > length - 4)
return message.substr(4, length - 4);
}
encoder.h 加密資料
/*
* encoder.h
* * created on: 2012-10-18
* author: root
*/#ifndef encoder_h_
#define encoder_h_
#include class encoder ;
#endif /* encoder_h_ */
encoder.cpp 加密資料類
/*
* encoder.cpp
* * created on: 2012-10-18
* author: root
*/#include "encoder.h"
#include "typeconvert.h"
#include encoder::encoder()
encoder::~encoder()
std::string encoder::encoder(std::string message) else if (length < 100) else if (length < 1000)
return (lenstr + message);
}
socket通訊例項 GUI
效果展示 專案 客戶端 public class client extends jframe implements runnable catch ioexception e 判斷連線是否建立 if socket.isconnected 初始客戶端 private void initclient 訊息...
socket的簡單通訊例項
分為服務端和客服端,先看服務端吧 做乙個控制台程式,using system using system.collections.generic using system.text using system.net using system.net.sockets namespace socket r...
Android與伺服器Socket通訊
最近在做乙個專案,需要用到socket通訊呼叫介面,發現了乙個很奇怪的問題,在呼叫介面後5分鐘1秒後才返回結果,這肯定是存在問題的,debug發現 停滯在這一句socket.getinputstream 於是我檢查了下 發現outstream.flush 了啊,後面我就很鬱悶了,但是也接觸不到服務端...