最近要做一個東西是android客戶端要與VC寫的服務器端進行數據連接與交換無奈先從java測試吧android還沒弄其實只要是遵循的同一個協議就可以通信了不管你的客戶端和服務器是什麼
服務器端VC代碼如下
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested MAKEWORD( 1, 1 );
err WSAStartup( wVersionRequested,
if ( err ! 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) ! 1 ||
HIBYTE( wsaData.wVersion ) ! 1 )
{
WSACleanup( );
return;
}
//一下代碼獲得IP和計算機名
char name[255];
char* ip NULL;
PHOSTENT hostInfo;
if (gethostname(name,sizeof(name)) 0)
{
if (hostInfo gethostbyname(name))
{
ip inet_ntoa(*(in_addr*)*(hostInfo->h_addr_list));
}
}
printf("%s--%s\n",ip,name);
//獲取socketServer對象
SOCKET sockSrv socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr htonl(INADDR_ANY); //設置監聽地址
addrSrv.sin_family AF_INET; //監聽類型
addrSrv.sin_port htons(6000); //監聽端口
bind(sockSrv,(SOCKADDR*)
listen(sockSrv,10);
SOCKADDR_IN addrClient;
int lensizeof(SOCKADDR);
while(true)
{
//開始接受數據等待
SOCKET sockConn accept(sockSrv,(SOCKADDR*)
char recvBuf[266] {0};
recv(sockConn,recvBuf,266,0);
std::cout < } //關閉套接字 closesocket(sockSrv); WSACleanup(); } 當然還要加入WS2_32.LIB文件。 客戶端代碼如下 import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.Socket; import java.net.SocketException; import java.net.UnknownHostException; public class ClientSocket extends Socket{ Socket socket; /** * 構造 */ public ClientSocket(String ip , int port){ try { socket new Socket(ip, port); System.out.println("連接建立成功: site:" ip " port:"port); } catch (UnknownHostException e) { System.out.println("失敗"); e.printStackTrace(); } catch (IOException e) { System.out.println("失敗"); e.printStackTrace(); } } public String send(String msg) { try { System.out.println("發送的內容" msg); PrintWriter out new PrintWriter(socket.getOutputStream()); out.print(msg); out.flush(); return null; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } public void close() { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) throws SocketException { ClientSocket socket new ClientSocket("127.0.0.1", 6000); socket.send("zhouxuguang"); socket.close(); System.out.println(socket.getReceiveBufferSize()); System.out.println(socket.getSendBufferSize()); } } 測試結果如下 客戶端 連接建立成功: site:127.0.0.1 port:6000 發送的內容zhouxuguang 8192 8192 服務器端 當然這只是簡單的字符串數據傳輸複雜的消息結構體的傳輸還有待進一步研究。下一步要研究android上怎麼與VC通信。