当前位置 : 主页 > 网络编程 > 其它编程 >

vcsocketjava_java與VC通信socket|學步園

来源:互联网 收集:自由互联 发布时间:2023-07-02
最近要做一個東西是android客戶端要與VC寫的服務器端進行數據連接與交換無奈先從java測試吧a 最近要做一個東西是android客戶端要與VC寫的服務器端進行數據連接與交換無奈先從java測試吧
最近要做一個東西是android客戶端要與VC寫的服務器端進行數據連接與交換無奈先從java測試吧a

最近要做一個東西是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

服務器端

1348391156_9134.jpg

當然這只是簡單的字符串數據傳輸複雜的消息結構體的傳輸還有待進一步研究。下一步要研究android上怎麼與VC通信。

上一篇:HTTP控制缓存
下一篇:没有了
网友评论