【Android学习笔记】Android作为客户端与Linux服务器端通过Socket连接

本文记录了Android客户端如何通过异步线程与Linux服务器建立Socket连接,解决NetworkOnMainThreadException异常问题。示例代码展示了扫描并连接到服务器60000端口的过程,要求服务器和客户端在同一局域网中。为了保持通信,关闭Socket的代码被注释。同时强调Android应用需要添加INTERNET权限以允许网络访问。
摘要由CSDN通过智能技术生成

      之前查找过很多网上的例子,直接new一个socket对象,传ip值和端口号进去,发现在手机上运行之后,都是不行的,会出现android.os.NetworkOnMainThreadException 异常错误,弄了几天,终于发现只有通过异步线程的方法才测试出一个可以运行的代码。此程序是可以扫描服务器开放的端口,再连接,我这里是开放了60000端口,测试时连接60000的端口。需要服务器和客户端都连在同一个局域网上。我的ip地址是192.168.2.106,本例子是查找哪个端口开放,有句socket.close()被我注释掉了,可保证服务器与客户端一直通信。

Linux服务器端:编译通过之后执行,这里为方便测试,客户端发送什么数据,服务器便收到返回同样数据

#include "./Server.cc"

int main()
{
	Server server;

	while (true)
   	{
        	server.setPort(60000);
        	std::cout << "start connect...\n";
        	Server new_sock;
        	std::string pattern = ",";

        	//get client connect and accept it.
        	server.accept(new_sock);

        	while (true)
        	{
            		std::string ack = "";
            		std::string recv;
            		new_sock >> recv;
        
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值