13.1基于TCP的Socket网络通信及Demo

2024-05-08 22:48

本文主要是介绍13.1基于TCP的Socket网络通信及Demo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、服务器端

二、客户端

三、遇到连接不上的问题解决办法

四、加入等待超时处理


一、服务器端

        在PC上运行,仅仅建立ServerSocket监听,并使用Socket获取输出流输出。该ServerSocket将会一直监听,等待客户端程序的连接。

//基于TCP的Socket网络通信例程 服务器端
public class SimpleServer {public static void main(String[] args) throws IOException{{//创建一个ServerSocket,用于监听客户端Socketde连接请求ServerSocket ss = new ServerSocket(30050);//采用循环不断的接收来自客户端的请求while(true){//每当接收到客户端Socket的请求,服务器端也对应产生一个SocketSocket s = ss.accept();OutputStream os = (OutputStream) s.getOutputStream();os.write("您好,您收到了服务器的消息!\n".getBytes("utf-8"));//关闭输出流,关闭Socketos.close();s.close();}}}
}

         接下来的代码用于打开Socket对应的输出流,并向输出流中写入一段字符串数据。这里强行 指定使用UTF-8字符集进行编码,可以避免乱码。

二、客户端

          仅仅使用Socket建立与指定IP地址、指定端口的连接,并使用Socket获取输入流。

/**
* 基于TCP的Socket网络通信例程 Android端
*@author dahaiChang
*created at 2019/8/16 10:45
*/
public class MainActivity extends Activity {private TextView show;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);show = findViewById(R.id.show);new Thread(){@Overridepublic void run() {super.run();try {//建立连接到远程服务器的SocketSocket socket = new Socket("192.168.1.128", 30050);//加入10s超时及处理socket.setSoTimeout(1000);//将Sockt对应的输入流包装成BufferReaderBufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));//进行普通IO操作String line = br.readLine();show.setText("来自服务器的数据:" + line);} catch (SocketException e) {e.printStackTrace();Log.e(TAG,"请求超时");} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}.start();}
}

     由于建立网络连接和 通信是不稳定的,所需时间也不确定,因此需要在子线程中完成网络连接。因此在配置文件中添加网络权限。

<uses-permission android:name="android.permission.INTERNET"/>

三、遇到连接不上的问题解决办法

       1、客户端与服务器端要处于同一个局域网中

       2、PC端的防火墙要关闭

四、加入等待超时处理

        在实际应用中,程序可能不想让执行网络连接、读取服务器数据的进程一直阻塞,要加入等待 超时处理。

                    //加入10s超时及处理socket.setSoTimeout(1000);

  Demo下载链接:https://github.com/dahaiChang/SocketClient

这篇关于13.1基于TCP的Socket网络通信及Demo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/971657

相关文章

如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题

《如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socketreadtimedout的问题》:本文主要介绍解决Druid线程... 目录异常信息触发场景找到版本发布更新的说明从版本更新信息可以看到该默认逻辑已经去除总结异常信息触发场景复

SpringBoot快速搭建TCP服务端和客户端全过程

《SpringBoot快速搭建TCP服务端和客户端全过程》:本文主要介绍SpringBoot快速搭建TCP服务端和客户端全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录TCPServerTCPClient总结由于工作需要,研究了SpringBoot搭建TCP通信的过程

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到

图解TCP三次握手|深度解析|为什么是三次

写在前面 这篇文章我们来讲解析 TCP三次握手。 TCP 报文段 传输控制块TCB:存储了每一个连接中的一些重要信息。比如TCP连接表,指向发送和接收缓冲的指针,指向重传队列的指针,当前的发送和接收序列等等。 我们再来看一下TCP报文段的组成结构 TCP 三次握手 过程 假设有一台客户端,B有一台服务器。最初两端的TCP进程都是处于CLOSED关闭状态,客户端A打开链接,服务器端

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接)  4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答  9.基于字节流 10.异常情况的处理 小结  前言 在前面,我们已经讲解了有关UDP协议的相关知识,但是在传输层,还有