最近学习了 java 通信 , 由于我文科生,这个思维比较分散,经常走不回来,所以。。。在研究代码如何写的更好的时候 经常由于走的太远了, 代码怎么写都写不完,改也改不好~~ 唉~ 希望大家写代码的时候都能 整体布局一下 , 大概 有一个 规范 , 让自己的脑子 能够 走一遍的时候 流畅的走一遍。
首先 我们要记得时时把握自己学习的进度,先想一下通信的大框架,解决一下概念问题,我们知道如果脑子能想到一样东西,然后画不出来或者做不出来,那是扯淡。
1.在物理硬件上 实现 通信的方式 是 通过电流,通过大电线杆子传过去,对面接收到电流,然后解释电流, 然后就实现了通信。
如何解释电流能,当然有一系列规则,会在后续解释这些规则。
这个软件上实现也不能离开这最基本的形式,因为计算机的数据是 0 1 , 由高低电压区分,而通信信号也是这么来的。
2.有了信号的交换,我们只能形成 一对一的 通信 ,为什么呢 , 因为线段只有两个端点,两天电线之间也只能实现一对一的通信是吧,如果每个人都跟一个人接一根线太麻烦,所以,所以,有人想到大家都接一个地方,然后由这个地方再将信息传出去,就行了不是,嘿嘿,这也是电话业务中交换机概念的由来。 这个集中了大家信息的中转站就是 计算机通信中的 服务器的概念。 大家把信息统一发给服务器,服务器再 发给指定的 一个人 , 或者 几个人 , 或者所有人。
3.这个我们实现的java通信 是 计算机之间的通信 ,计算机通信有一个发展了很久的连接方式,它就是互联网, 计算机的通信 又涉及到 计算机这个硬件 以及它 发展历史中的一些特殊的问题,计算机是通过 ip 和 端口 实现和别的计算机之间的通信的,ip 就是 互联网中一台电脑的地址,概念是抽象自 现实社会中人们的住址,
* 端口号是因为计算机自身的特点,电话只能一次跟一个人打电话,因为我们一般一个人用一台电话,然后给一个人打,计算机可以同时跟外部多个 对象进行通信, 因为计算机有很多种端口号,端口号 不提了 , 简单留意一下 0 - 1024 的端口号是预留给系统软件的。
有了这个最基本的概念 , 我们也不去从底层慢慢往上爬了,我们直接在软甲里实现一下通信,有了前人的历史我们就好走多了 哈 。 我们java 已经 有了 集成好了 服务器和 客户端 功能的 类 , java.net 这个包里, java.net.包里的这个 ServerSocket 类就是 用代码 实现了服务器的功能 , 这里用到java这个编程语言的特点哈, 类与对象 new 一个 socket 类 的对象, serversocket 看名字就知道它的意思是服务 socket 对不对, socket 就是 客户端 ,上一个是服务它的, 就是服务端,有了客户端有了服务端,在加上这是在计算机上,而且是java语言 , 我们大概知道怎么写了把 ?
我们先要写一个服务端,然后客户端通过 服务端 达成 与其他客户端之间的通信。
代码如下
java.net.ServerSocket server = new ServerSocket(9999)
;
在写服务器的时候,以9999号端口搭建,
Socket client = server.accept();
服务器接受 socket 客户端的访问 , 在这里可以写在 while(true) 语句里面,因为,服务器要不断的接受 socket 客户端的访问 , 不能只接受一两个就关闭 。
然后我们看客户端java 怎么帮我们实现, java.net 包里 有个 socket 类,实现的就是 客户端的功能
好 , 我们再写个 客户端
client = new Socket("localhost", 9999)
由于是在本机搭建 所以 在 Socket 两个参数的前一个填的是 localhost 这个ip , 大家自己本机的ip也可以 在命令提示符输入 ipconfig 查看
有了客户端和服务器 我们就 可以 传输电流了 ~ 不是 , 传输 信息了 , 其实也就是电流~ 。
经过层层包装,在java里面已经用 io 输入输出流 来表示了, 从socket客户端对象上取到属于它的 inputstream 输入流 和 outputstream 输出流对象, 就可以跟这个客户端通电啦 , 先用服务器跟这个 客户端同个 “电”。
ServerSocket server = new ServerSocket(9999);
Socket client = server.accept();
InputStream is = client.getInputStream();
OutputStream os = client.getOutputStream();
byte[] message = "hello".getBytes();
os.write(message);
服务端收个电
void accepectMessage(){
Socket client = new Socket("localhost", 9999);
InputStream is = client.getInputStream();
OutputStream os = client.getOutputStream();
Byte[] acceptMessage = new Byte[50];
String message = "";
for (int i = 0; i < acceptMessage.length; i++) {
message = message + (char) acceptMessage[i];
}
System.out.println(message);
}
}
这里注意几点问题,因为 数据是一个字节一个字节 发送的 , 为什么是一个字节我也不知道,但是大家要记住, 所以 hello 这个 字符串是被拆成 h e l l o 这五个字符的ascii码,一个字母一个字节的形式发送到客户端, 我们暂时先给客户端写了个能装50个字节对象的字节数组,然后将接受过来的一个字节一个字节转成字符 然后再 凑成 字符串 再输出来,然后就能输出 hello 了 。
通信入门至此结束,然后其他通信的内容都是基于 这个 通信的基础 用代码处理出来的。
- 大小: 34.4 KB
- 大小: 9 KB
- 大小: 14.8 KB
分享到:
相关推荐
【标题】: 文科生与理科生可选专业概述 【描述】: 本文档汇总了文科生和理科生在高等教育阶段可以选择的专业类别,涵盖了哲学、经济学、法学等多个学科领域,以及部分文理兼收的专业。 【标签】: 文档 【正文】: ...
标题与描述均为:“让理科生沉默,文科生流泪的试题”。这暗示了题目难度极大,既挑战理科学生的逻辑思维能力,又考验文科学生的知识广度和深度。 #### 2. 内容分析 虽然提供的内容似乎是乱码,但我们可以尝试从中...
在高中阶段,政治学科往往被视为文科生的重点科目,理科生则偏重于数理化生等自然科学学科。然而,高考或考研政治对于文科生和理科生而言,都是一门不容忽视的必考科目。尽管学习背景和习惯上的差异使得文理科生在...
经济分析报告:理科生一定比文科生牛么?错了!(2021)(12页).pdf
2. 教师不了解学生、缺乏因材施教:教师在授课时往往忽视学生的个体差异,对文科生和理科生采用相同教学方法,未能根据文科生的思维特点调整教学内容和策略。 针对上述问题,文章作者提出了改进教学效果的策略,以...
1. **哲学**:包括哲学、逻辑学、宗教学、伦理学等,通常被认为是纯文科专业,但也有些学校对理科生开放。 2. **经济学**:经济学类、财政学类、金融学类、经济与贸易类,许多专业文理兼收,如金融学、财政学、国际...
大学理科生在学习道路上,面对的是一个广阔而深邃的科学世界,这个旅程远...大学理科生应该追求的是知识的深度和广度,以及将理论应用于实践的能力,这样在毕业后才能更好地适应社会的需求,成为社会所需的专业人才。
文科生和理科生使用同一本教材,理科生可能难以适应教材中偏向文科的理论性和文字性内容。教师为了赶进度,往往采取机械的授课方式,学生则感到困惑,久而久之,师生双方都对政治课失去兴趣。 3. 教师和学生的主观...
画爱心代码,java爱心代码,送女生/女神节礼物,理科生的浪漫。 脱单必备,宅男神奇。
【考研试题】是针对大学生,特别是工科和理科学生准备研究生入学考试的重要参考资料。这些试题通常涵盖各个学科的专业知识,旨在测试学生的理论基础、实践能力以及独立思考问题的能力。对于备考的学生来说,深入理解...
由于文科与理科学生的学习背景和思维方式存在差异,因此文科学生在学习像C语言这样逻辑性较强的计算机课程时可能会感到特别吃力。 要解决这一问题,首先需要使学生了解计算机语言与自然语言之间的联系和区别。自然...
除了认知能力方面的差异,文科生的学习方式也与理科生有所区别。文科生更容易习惯于机械记忆,缺乏主动思考和创新的意识,这种学习方式难以应对日益强调综合运用和创新能力的高中数学课程。 面对这些挑战,我们提出...
来自理科生的浪漫.exe
开发者可能创建了三个不同的数据表,分别对应文科、理科和艺术生的成绩,每个表包含学生的ID、姓名、科目成绩等字段。MySQL的SQL语句用于执行CRUD(创建、读取、更新、删除)操作,确保数据的准确性和一致性。 页面...
使用Python中的Tkinter工具包实现的一颗跳动的心,可以学习Tkinter组件的使用,同时也是理科生表白神器。
通过实际操作,学生将熟悉数据库结构设计、用户界面构建以及数据处理逻辑的实现。在不涉及复杂的权限控制和安全性的情况下,重点在于锻炼学生的编程技能和系统设计能力,提升对"3+2"模型的理解。 二、高考信息管理...
高中语文文摘校园理科生三行情诗
【高考复习】理科生必看:高考物理知识的记忆十三法.pdf
本文是对理科生借书特点的分析研究,采用了数据挖掘技术,重点在于利用关联规则算法对学生的借阅习惯进行研究。数据挖掘技术是近年来迅速发展的一个领域,它涉及从大量数据中提取或“挖掘”出有价值的知识的过程。...
【理科综合考试】是针对高中理科学生的综合能力测试,旨在评估学生对物理、化学、生物等理科课程基础知识、基本技能的掌握程度以及运用所学知识分析、解决问题的能力。该考试的命题思路强调“以能力测试为主导”,...