最近,要做一个东西,是android客户端要与VC写的服务器端进行数据连接与交换,无奈,先从java测试吧,android还没弄,其实只要是遵循的同一个协议就可以通信了,不管你的客户端和服务器是什么编程语言,什么操作系统,都不重要,重要的是遵循TCP或UDP协议等,先不废话了,上代码再说,

服务器端VC代码如下:

void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );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*)&addrSrv,sizeof(SOCKADDR));listen(sockSrv,10);SOCKADDR_IN addrClient;int len=sizeof(SOCKADDR);while(true){//开始接受数据,等待SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len);char recvBuf[266] = {0};recv(sockConn,recvBuf,266,0);std::cout << recvBuf << std::endl;}//关闭套接字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通信。

更多相关文章

  1. Android下关于Dialog的学习
  2. Android系统深度游
  3. phoneGap插件
  4. Android(安卓)OpenGL ES 开发入门
  5. AndroidO audio系统之框架简介(一)
  6. 通过Html网页调用本地安卓(android)app程序代码
  7. 又一个博客园Android客户端(附APK下载)
  8. Android(安卓)中自定义View的应用.
  9. Android动画之属性动画(Property Animation)(三)

随机推荐

  1. Android NDK开发学习(四)
  2. No.10 LVM快照的特点
  3. Android 适配7.0拍照、图库、裁剪
  4. android rotate
  5. Google将推出Android手机版Voice应用程序
  6. Android单元测试框架 Robolectric
  7. android selinux权限, Permission denied,
  8. 在模拟器上安装软件
  9. Linux 环境下实战 Rsync 备份工具及配置
  10. 一款霸榜 GitHub 的开源 Linux 资源监视