没接触通信编程之前,总觉得通信好神秘,不知道移动通信是如何实现了“天涯若比邻”的梦想的。接触基本的通信原理后,才从技术层面对通信有了一定的了解。
基本的通信实现需要些什么呢?首先需要一个服务器和一个客户端。通信的基本过程就是服务器和客户端的交互,服务器将要传送的文件送到服务器,服务器根据客户端的要求发送给指定的客户端,从而完成了客户端通过服务器与其它客户端通信的目的。
下面来看一个完成基本通信的一个小例子
package tongxin; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import javax.swing.JTextPane; import javax.swing.event.DocumentListener; import javax.swing.event.UndoableEditListener; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.Document; import javax.swing.text.Element; import javax.swing.text.Position; import javax.swing.text.Segment; public class Client { ArrayList<ClientTread> list=new ArrayList<>(); public static void main(String[] args) { Client cilent=new Client(); cilent.setUpPort(9090); } //开启服务器端口的函数 public void setUpPort(int port){ try { ServerSocket ss=new ServerSocket(port); System.out.println("程序运行了"); while(true){ /*当有客户端访问port端口时,接收一个socket对象,这个对象相当于客户端与服务器信息交流的管道*/ Socket s=ss.accept(); System.out.println("ppp"); /*这里启动线程,让线程去处理与客户端交互的问题, 服务端就可以一直等待下一个客户端的访问,如此便可实现多个客户端同时访问同一接口*/ ClientTread ct=new ClientTread(s,list); list.add(ct); ct.start(); } }catch (Exception e1) {} } }
package tongxin; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.ArrayList; public class ClientTread extends Thread{ private Socket s; private ArrayList<ClientTread> list; OutputStream output; public ClientTread(Socket s,ArrayList<ClientTread> list) { this.s = s; this.list=list; } public void run(){ try{ InputStream input=s.getInputStream(); output=s.getOutputStream(); String str="请输入姓名:"; //默认输入的第一次输入的是名字 sendMes(str+"\r\n"); String name=readLine(input); while(true){ String mes=readLine(input); System.out.println(mes); //将消息发送给其他客户端 for(int i=0;i<list.size();i++){ ClientTread t=list.get(i); if(t==this)continue; t.sendMes(name+":"+mes+"\r\n"); } if("bye".equals(s)){ input.close(); output.close(); s.close(); break; } } }catch(Exception e2){} } public String readLine(InputStream input) throws IOException{ ByteArrayOutputStream bos=new ByteArrayOutputStream(); while(true){ int n=input.read(); if(n=='\r')continue; if(n=='\n')break; bos.write(n); } byte bytes[]=bos.toByteArray(); String string = new String(bytes,"GBK"); return string; } public void sendMes(String mes) throws IOException{ output.write(mes.getBytes("GBK")); output.flush(); } }
package tongxin; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.ArrayList; public class ClientTread extends Thread{ private Socket s; private ArrayList<ClientTread> list; OutputStream output; public ClientTread(Socket s,ArrayList<ClientTread> list) { this.s = s; this.list=list; } public void run(){ try{ InputStream input=s.getInputStream(); output=s.getOutputStream(); String str="请输入姓名:"; //默认输入的第一次输入的是名字 sendMes(str+"\r\n"); String name=readLine(input); while(true){ String mes=readLine(input); System.out.println(mes); //将消息发送给其他客户端 for(int i=0;i<list.size();i++){ ClientTread t=list.get(i); if(t==this)continue; t.sendMes(name+":"+mes+"\r\n"); } if("bye".equals(s)){ input.close(); output.close(); s.close(); break; } } }catch(Exception e2){} } public String readLine(InputStream input) throws IOException{ ByteArrayOutputStream bos=new ByteArrayOutputStream(); while(true){ int n=input.read(); if(n=='\r')continue; if(n=='\n')break; bos.write(n); } byte bytes[]=bos.toByteArray(); String string = new String(bytes,"GBK"); return string; } public void sendMes(String mes) throws IOException{ output.write(mes.getBytes("GBK")); output.flush(); } }
package tongxin; //降低耦合度的接口 public interface MsgListener { public void onRecvMsg(String msg); }
相对于以前,这次代码比较多,代码比较难的地方写有注释,如果对线程和输入输出流的知识比较熟练的话,应该不难理解。
相关推荐
Java网络通信系统的研究与开发是IT领域中的一个重要课题,它涉及到多方面的技术,包括网络编程、并发处理、数据传输以及服务器架构等。本项目提供的源代码和论文详细阐述了如何利用Java实现一个高效的网络通信系统。...
本课题是应用了计算机网络通信技术和JAVA网络编程的基础知识,以JAVA为平台,利用Eclipse开发工具,并使用SQL Server 2000管理数据库数据开发出的基于Socket的网络即时通信系统。(论文+源代码+开题报告)
java实验实现网络通信,服务端
Java 网络通信程序设计 Java 网络通信程序设计是指使用 Java 语言来实现网络通信的功能。这种设计通常涉及到Socket 通信、TCP/IP 套接字连接、输入输出流、线程等概念。 在这里,我们将从以下几个方面来探讨 Java ...
(Java毕业设计)JAVA网络通信系统的研究与开发(Java毕业设计)JAVA网络通信系统的研究与开发(Java毕业设计)JAVA网络通信系统的研究与开发(Java毕业设计)JAVA网络通信系统的研究与开发(Java毕业设计)JAVA网络通信系统的...
JAVA网络通信系统的研究与开发(源代码).zipJAVA网络通信系统的研究与开发(源代码).zipJAVA网络通信系统的研究与开发(源代码).zipJAVA网络通信系统的研究与开发(源代码).zipJAVA网络通信系统的研究与开发(源代码).zip...
java 网络通信 实例 java 网络通信 实例java 网络通信 实例java 网络通信 实例java 网络通信 实例java 网络通信 实例java 网络通信 实例java 网络通信 实例java 网络通信 实例java 网络通信 实例java 网络通信 实例
JAVA网络通信系统的研究与开发(论文+源代码+开题报告)JAVA网络通信系统的研究与开发(论文+源代码+开题报告)JAVA网络通信系统的研究与开发(论文+源代码+开题报告)JAVA网络通信系统的研究与开发(论文+源代码+开题报告)...
JAVA网络通信系统的研究与开发(源代码+论文+开题报告) JAVA网络通信系统的研究与开发(源代码+论文+开题报告) JAVA网络通信系统的研究与开发(源代码+论文+开题报告) JAVA网络通信系统的研究与开发(源代码+论文+开题...
Java网络通信是一个重要的主题,特别是在开发分布式系统和网络应用程序时。TCP(传输控制协议)是互联网上广泛使用的面向连接的、可靠的传输层协议。在这个Java项目中,我们专注于使用TCP进行网络通信,提供了完整的...
JAVA网络通信系统的研究与开发(LW+源代码+开题报告)JAVA网络通信系统的研究与开发(LW+源代码+开题报告)JAVA网络通信系统的研究与开发(LW+源代码+开题报告)JAVA网络通信系统的研究与开发(LW+源代码+开题报告)JAVA网络...
JAVA网络通信系统的研究与开发是信息技术领域中的一个重要课题,它涉及到如何使用JAVA语言构建网络通信应用,以便实现在互联网上的信息交互。JAVA网络通信系统通常包括客户端和服务器端的架构,允许用户通过网络进行...
JAVA网络通信系统的研究与开发(论文+源代码+开题报告) JAVA网络通信系统的研究与开发(论文+源代码+开题报告) JAVA网络通信系统的研究与开发(论文+源代码+开题报告) JAVA网络通信系统的研究与开发(论文+源代码+开题...
Java网络通信源代码是Java编程领域中的一个重要主题,它涵盖了如何使用Java API进行网络上的数据交换。这个主题包括了客户端-服务器模型、套接字编程、多线程、输入输出流以及TCP和UDP协议的使用等核心概念。下面将...
java毕业设计——java网络通信系统的研究与开发(论文+源代码+开题报告).zip java毕业设计——java网络通信系统的研究与开发(论文+源代码+开题报告).zip java毕业设计——java网络通信系统的研究与开发(论文+源代码+...