自己写了一个Android的APP,想用socket连接服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自己写了一个Android的APP,想用socket连接服务器相关的知识,希望对你有一定的参考价值。

最近我在在写一个APP,用到了socket,在自己电脑上搭建的服务器,具体过程: 用eclipse写Java代码,创建一个serversocket,用来监听客户端的请求; 客户端在发送数据前,首先创建一个Socket,然后直接请求服务器即可。自己写了一个android的APP,想用socket连接服务器 参考技术A 把数据传输和socket连接分开就可以了,把SOCKET传输和接收数据写到一个线程里面,这样每次发送和接收数据就都在线程里面运行了,同时socket和线程的关闭也需要单独写在一个方法里面,发生异常的时候调用关闭 查看原帖>> 参考技术B +5V电平对地导通,信

模仿Wireshark网络抓包工具实现---c++

最近在用Wireshark抓包工具的时候,老感觉这东西用起来很简单,功能强大,所以想了解他的实现原理,我就自己好奇写了一个实现基本功能的demo吧。

其实叫抓包工具,其实就是抓取流经自己网卡的所有ip包,我们能够按照ip包的协议解析不就行了。

实现的核心在这里:

 1 //创建SOCKET  
 2     sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP);  
 3     if (sock == INVALID_SOCKET)  
 4     {  
 5         cout << WSAGetLastError();  
 6         return 0;  
 7     }  
 8     //获取本机地址  
 9     char  name[128];  
10     if (-1 == gethostname(name, sizeof(name)))  
11     {  
12         closesocket(sock);  
13         cout << WSAGetLastError();  
14         return 0;  
15     }  
16     struct hostent * pHostent;  
17     pHostent = gethostbyname(name);  
18     //绑定本地地址到SOCKET句柄  
19     sockaddr_in addr;  
20     addr.sin_family = AF_INET;  
21     addr.sin_addr = *(in_addr*)pHostent->h_addr_list[0]; //IP  
22     addr.sin_port = 8888; //端口,IP层端口可随意填  
23     if (SOCKET_ERROR == bind(sock, (sockaddr *)&addr, sizeof(addr)))  
24     {  
25         closesocket(sock);  
26         cout << WSAGetLastError();  
27         return 0;  
28     }  
29 
30     //设置该SOCKET为接收所有流经绑定的IP的网卡的所有数据,包括接收和发送的数据包  
31     u_long sioarg = 1;  
32     DWORD wt = 0;  
33     if (SOCKET_ERROR == WSAIoctl(sock, SIO_RCVALL, &sioarg, sizeof(sioarg), NULL, 0, &wt, NULL, NULL))  
34     {  
35         closesocket(sock);  
36         cout << WSAGetLastError();  
37         return 0;  
38     }  
39     //我们只需要接收数据,因此设置为阻塞IO,使用最简单的IO模型  
40     u_long bioarg = 0;  
41     if (SOCKET_ERROR == ioctlsocket(sock, FIONBIO, &bioarg))  
42     {  
43         closesocket(sock);  
44         cout << WSAGetLastError();  
45         return 0;  
46     }  
47     //开始接收数据  
48     //因为前面已经设置为阻塞IO,recv在接收到数据前不会返回。  
49     g_event = CreateEvent(NULL,TRUE,FALSE,NULL);

其他的就不多说了,有开发经验的应该都会,这个是半天弄出来的,所以很多代码没有整理,还请见谅。我主要是实现功能,好自己用。

下面是截图: 技术图片

代码地址:

 http://download.csdn.net/detail/hegangle/9777070

 

以上是关于自己写了一个Android的APP,想用socket连接服务器的主要内容,如果未能解决你的问题,请参考以下文章

写了一个简单的登陆启动android客户端就出现如下的错误提示

使用LogPhoneUtil工具类在Android手机保存APP运行日志

来自 SOCKS 服务器的 Android Orbot 格式错误的回复

在 Java 中使用 HTTP 代理作为 SOCKS

android表白app

校园管家(Android开发团队项目)NABCD