Android原生开发同一局域网内利用socket通信进行数据传输

1、数据接收端代码如下,注意:socket 接收信息需要异步运行:

复制代码
// port 端口号自定义一个值,比如 8888,但需和发送端使用的端口号保持一致
ServerSocket serverSocket = new ServerSocket(port);
while (true) {
	try {
        //连接客户端
		Socket clientSocket = serverSocket.accept();
		BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        // 接收内容
		String message = in.readLine();
		clientSocket.close();
	} catch (IOException e) {
		e.printStackTrace();
	}
}

2、数据发送端代码,注意:socket 发送信息需要异步运行:

复制代码
try {
    // ip 指的是数据接收端的 ip 地址,port 端口号和前面数据发送端的端口号保持一致
	Socket socket = new Socket(ip, port);
	DataOutputStream writer = new DataOutputStream(socket.getOutputStream());
    // 写入 UTF8 格式的文本数据并发送,这里我把内容写死,实际操作中可以动态替换
	writer.writeUTF("文本数据123456");
	socket.close();
} catch (IOException e) {
	e.printStackTrace();
}

3、获取本机 ip 地址

3.1、方式一:如果是连的局域网 Wifi,可以代码获取

复制代码
// 获取当前WiFi的IP地址
public static String getLocalIpAddress(Context context) {
	WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
	int ipAddress = wifiManager.getConnectionInfo().getIpAddress();
	String str = String.format("%d.%d.%d.%d",
			(ipAddress & 0xff),
			(ipAddress >> 8 & 0xff),
			(ipAddress >> 16 & 0xff),
			(ipAddress >> 24 & 0xff));
	if (TextUtils.isEmpty(str)) {
		Toast.makeText(context, "WIFI IP 地址获取失败", Toast.LENGTH_SHORT);
	}
	return str;
}

3.2、如果不是连的局域网 Wifi 或者不想用代码获取,可以打开设备-设置-关于手机/平板-状态信息-IP 地址,如下图所示:

4、个人自测调试用的 Demo 源码,有需要的可以打开下面资源链接免积分下载:

https://download.csdn.net/download/victor_E_N_01185/90244292?spm=1001.2014.3001.5503

5、Demo 操作及效果视频如下:要确保所连的 Wifi 是同一个,一般同一 Wifi 的 ip 地址的前两个部分是一样的,比如都是 192.168.XX.XX,最好关闭移动流量的开关,否则数据传输可能会失败,我用的是代码来获取的本机 ip 地址,如果使用的是流量,则 ip 地址会获取失败,后续操作也都会失败,大家可以改为手动输入 ip 地址或者写死 ip 地址来进行调试

局域网 Socket 数据传输 Demo

相关推荐
Web极客码1 分钟前
如何用 Docker 容器与“看门狗”脚本安全驯服 OpenClaw
服务器·人工智能·ai编程
rcms152702692181 分钟前
Matrox Genesis 63039620241采集卡
网络
William.csj4 分钟前
服务器——终端ssh可以连接进服务器,vscode连接不进去服务器的解决办法
服务器·vscode·ssh
网安小白的进阶之路5 分钟前
B模块 安全通信网络 第二门课IPv6与WLAN 05
网络·安全
一条泥憨鱼10 分钟前
Harness Engineering(驾驭工程)零基础入门
网络·人工智能·harness·驾驭工程
2601_9557674210 分钟前
2026年iPhone17护眼钢化膜推荐:悟赫德测评
网络·人工智能·iphone·#观复盾护景贴·scinique双护技术
超级无敌zhq12 分钟前
内网权限维持实战:打造持久化后门与隐蔽通道
网络·windows·安全·网络安全
星光不负赶路人!17 分钟前
【工作记录】sqlserver数据库操作及迁移
服务器·数据库·sqlserver
ftf拿破仑18 分钟前
嵌入式面试高频问题
linux·面试
女神下凡21 分钟前
轻量应用服务器 与 云服务器ECS 区别
运维·服务器