最近开始学习java通信编程也就是socket编程,在接触之前,对通信的感觉就是高大上的感觉,一台计算机,几行代码,就能实现收发信息,乍一看感觉不过如此,但如果仔细一想,QQ,微信,来往····,不都是以这为基础发展来的吗。
当想到QQ,微信的时候,你会不会觉得通信一个庞然大物呢?反正我最初是这么觉得的,以至于气势就被压制下去,所以学的很被动、很累。
但随着慢慢的接触,你会发现通信是个很大的概念,但真正属于通信的知识很少,可以说几行代码足以代表通信了。不信?那就请看
//1.创建服务器
ServerSocket socket = new ServerSocket(port);
这就有了个服务器程序了吧
Socket client = socket.accept();
这就有了客户端程序了吧
public void startupServer(int port){
try {
//1.创建服务器
ServerSocket socket = new ServerSocket(port);
//2.让服务器循环等待
while(true){
Socket client = socket.accept();
//3.得到客户端的输入输出流
InputStream is = client.getInputStream();
OutputStream os = client.getOutputStream();
String message = "hello!!";
os.write(message.getBytes());
os.flush();
int in = 0;
while(in!=13){
in = is.read();
System.out.println("收到信息来自客户端的信息:"+in);
}
System.out.println("客户端按了回车,退出:"+in);
client.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
然后服务器、客户端连接了吧
完了,没了,这就是通信的精华了。
这就相当于有两个人想相互打电话,我一人给了一部电话,然后又接通了两部手机之间的网络(服务器与客户端连接),难道这还不够吗?接下来就是他们说话的事情了(IO流,收发数据)。这个时候你就可以说你已经学会了通信了,但这就够了吗?现在不都喜欢人性化,友好化吗?你要让人家打电话打得舒服一点嘛
所以你会想让他们可以持续通话,聊到够为止,所以你需要让电话持续的接收对方的信息,怎么做呢?循环嘛
//2.让服务器循环等待
while(true){
Socket client = socket.accept();
//3.得到客户端的输入输出流
InputStream is = client.getInputStream();
OutputStream os = client.getOutputStream();
String message = "hello!!";
os.write(message.getBytes());
os.flush();
int in = 0;
while(in!=13){
in = is.read();
System.out.println("收到信息来自客户端的信息:"+in);
}
System.out.println("客户端按了回车,退出:"+in);
client.close();
}
人总是不知足,现在我又想多人一起聊天怎么办呢?好办啊,多写几个循环分别读取各自的消息嘛,但怎么实现这刀哥循环呢?线程嘛,一个线程不就相当于一个循环嘛。
public void startUpServer(int port) {
try {
// 实例化服务器对象
ServerSocket server = new ServerSocket(port);
while (true) {
// 等待客户机的连接
Socket client = server.accept();
// 当有一个客户机连接上后,将客户机对象交给一个单独线程处理
ServerThread st = new ServerThread(client);
st.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
线程类
public class ServerThread extends Thread{
//待处理的客户机对象
private Socket client;
//待处理客户机对象的输入输出流
private OutputStream os;
private InputStream is;
//线程构造方法,将客户机对象传过来
public ServerThread(Socket client){
this.client = client;
}
public void run(){
//线程中处理客户机
processChat();
}
//处理聊天任务的方法
public void processChat(){
try{
//取得客户机对象的输入输出流
os = client.getOutputStream();
is = client.getInputStream();
String s = "你好可以开始聊天了";
sendMsg(os, s);
String msg = readMsg(is);
while(!msg.endsWith("#")){
System.out.println(msg);
msg = readMsg(is);
}
System.out.println(msg.substring(0,msg.length()-1));
System.out.println("下线了!!");
client.close();
}catch(Exception e){
e.printStackTrace();
}
}
//给该客户机发消息的方法
public void sendMsg(OutputStream os,String msg){
try {
msg+="\r\n";
os.write(msg.getBytes());
os.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
//读取客户机发送的消息的方法
public String readMsg(InputStream is){
String s = "";
try {
StringBuffer sb = new StringBuffer();
int temp= is.read();
while(temp!=13){
sb.append((char)temp);
temp= is.read();
}
s = sb.toString().trim();;
} catch (IOException e) {
e.printStackTrace();
}
return s;
}
}
现在功能差不多了,我又想让我的电话好看点,这样才炫,才有面子嘛,怎么办呢?小case吗,用swing编程呗,我想要给电话加个外壳,用JFrame呗,我想要给电话加个显示屏,用JTextField呗,我还想要键盘,不是有JButton吗,这样我的“电话”就初具规模了,接下来就是在一步步加上各种器件,比方说触摸屏(画板)啊,锁屏(登录界面swing)啊什么的,都可以慢慢往上加,现在想想看,关于通信的有多少东西呢?貌似就是前面那几行代码,其他的就是I/O的知识,Swing的知识,事件机制的知识,线程的知识。
好了,现在就可以说我们学完通信了。如果你真这么以为,那么你就打错特错了。在随后接触了java web编程,我发现我理解的通信有太过狭隘了。目前据我所知,通信应该是贯穿在两种模式中:一种就是C/S模式,一个client客户端,一个server服务器端。一种就是B/S模式,一个browser浏览器端,一个server服务器。
所以个人觉得通信就是不同机器之间的数据传输,抓住几个重点,就可以很好的把握通信技术了。一般通信会有对象代替客户端,比如PC机上的qq程序;会有一个或多个服务器用于管理各个客户端之间的交流及相关权限功能等,就相当于人类大脑一样;会大量用到I/O技术。然后就是基本功能的完善,比如界面编程,线程,各类算法,通信协议···。然后就是我们看似庞大的通信知识了。
分享到:
相关推荐
浅谈通信工程中有线传输技术的优化策略-论文.zip
"浅谈通信电源保护治理" 浅谈通信电源保护治理是近年来电信网快速发展的重要组成部分。随着电信网的扩展,电源保护治理工作人员面临着新的挑战。当前通信电源供电体制主要是集中放置、集中供电方式为主,有人值守、...
浅谈通信行业客户服务存在的问题和对策 本文主要分析了通信行业客户服务的重要性、我国通信行业的客户服务现状及存在的问题,并提出了解决方案。 一、通信行业发展现状 通信行业是一个技术导向型的行业。随着3G...
浅谈通信工程中的管理策略[J]. 信息通信, 2015(07): 196-197. 总结:通信工程管理需要与时俱进,融合现代信息技术,提高服务质量,优化管理流程,强化成本控制,以应对不断增长的项目需求和复杂的技术环境。通过...
浅谈通信设计工作的创新――小记中汛邮电咨询设计院有限公司交换处传输专业创新历程(完整版)实用资料 通信设计工作的创新是当前通信行业的热点话题。在激烈的市场竞争中,设计人员需要不断创新,推动设计工作的...
《浅谈通信技术在我国农业生产中的应用》一文探讨了通信技术如何在农业领域发挥关键作用,推动我国农业向信息化迈进。通信技术主要包括有线通信和无线通信,它们在农业生产中的应用日益广泛,对于提升农业生产效率和...
浅谈通信工程项目在国民经济转型中的价值 通信工程项目在国民经济转型中的价值是指通过通信工程技术的应用,来推动国民经济的发展和转型。通信工程技术是指以现代电子技术为主,集信息技术、网络通信技术为一体化的...
《浅谈通信技术在智能电网中的应用》这篇文章主要探讨了通信技术在构建智能电网中的重要性和具体应用。智能电网,作为电力系统的升级版,通过集成先进的通信技术,实现了电力系统的自动化、高效化和智能化运行。以下...
浅谈通信工程传输技术的应用与未来发展 通信工程传输技术是信息通信工程的重要组成部分,它主要依赖于所选信道的传输能力和特性。通过构成完整的传输系统,进而实现信息的可靠传输。随着科学技术的不断革新和技术...
浅谈通信电源集中监控系统中的网络通信技术.pdf
### 浅谈通信工程施工中信息化管理的运用 #### 摘要 随着经济全球化的步伐加快,信息技术在各个领域中的应用越来越广泛。特别是在通信工程领域,信息化管理的应用不仅提升了工作效率,还增强了工程质量和成本控制...
浅谈通信技术与计算机技术融合发展 (1).pdf
【通信工程监理信息化系统】是通信工程领域的重要组成部分,它涉及到通信工程的全过程管理,旨在通过信息化手段提高监理效率和质量。信息化系统不仅能够辅助通信监理实践,为监理工程师的决策提供依据,还能够实现对...
【通信技术】是现代社会不可或缺的重要组成部分,它涵盖了数据通信、通信介质、通信模块等多个方面,对日常生活产生了深远影响。随着科技的进步,通信技术不仅提升了社会生产效率,还极大地丰富了我们的生活方式。 ...
通信机房作为信息通信技术基础设施的重要组成部分,承载着大量通信业务的运行,但其能源消耗量巨大,尤其是电能。随着通信行业技术的快速发展,节能减排成为行业关注的焦点。本篇论文深入探讨了通信机房中电源节能...
通信行业大数据的应用,涉及到网络优化、市场营销策略以及新产品的开发,这都是信息时代通信行业的重要发展方向。 大数据在通信行业的应用首先体现在网络优化上。通过对无线网络使用情况、资源配置、用户分布和行为...
在通信行业中,客户服务扮演着至关重要的角色,尤其是在当前信息技术飞速发展的背景下,竞争愈发激烈。通信行业的重心已从产品转向市场和客户需求,因此,提高客户服务质量,挖掘客户潜力,成为通信企业生存和发展的...
【通信技术产业自主创新的重要性】 通信技术产业作为现代社会的基石,其自主创新对于推动科技进步和社会发展具有至关重要的作用。4G通信技术作为3G的升级版,不仅显著提升了数据传输速率,而且在网络频谱宽度、用户...
【通信技术与智慧城市】 通信技术是推动智慧城市建设的关键要素,它为城市管理提供了全新的思路和理念。智慧城市是指通过物联网、信息、通信以及数据等现代技术,将城市建设和管理模式有机结合,实现城市功能的高效...