TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、基于IP的传输层协议,在Java中网络通信是非常重要的TCP/IP是网络中使用的基本的通信协议。虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:远程登录、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。通常说TCP/IP是Internet协议族,而不单单是TCP和IP。接下来看看简单的例子
package Wangluo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; public class tread extends Thread{ private Socket socket; private String name; public tread(Socket socket){ this.socket=socket; name=socket.getLocalAddress().getHostName(); //获取客户端主机名字 } public void run(){ try{ //从Socket 上获得输出流对象 从服务端到客户端 OutputStream p=socket.getOutputStream(); //包装成字符输出流 OutputStreamWriter out=new OutputStreamWriter(p); //包装成缓冲字符输出流 BufferedWriter buf=new BufferedWriter(out); //发送消息 buf.write("欢迎来到聊天室"+"\r\n"); buf.flush(); //获得输入流 从客户端到服务端 InputStream inp=socket.getInputStream(); //将输入流包装成字符流 InputStreamReader irs=new InputStreamReader(inp); //包装成字符缓冲流 BufferedReader br=new BufferedReader(irs); //读取一行字符串,必须读到\r,\n才会结束,否则一直等待 String str=br.readLine(); while(str!=null){ System.out.println(name+"说:"+str); //将收到的消息转发给在线的所有其他客户端 //遍历socket队列 for(int i=0;i<Myserver.list.size();i++){ //取出客户端套接字 Socket sc=Myserver.list.get(i); //转发消息 if(!sc.isClosed()&&sc!=socket){ //从要被转发的客户端套接字上获得数据输出流 OutputStream ops=sc.getOutputStream(); //打包成缓冲字符流 BufferedWriter buf1=new BufferedWriter(new OutputStreamWriter(ops)); //发送消息给该客户端 buf1.write(name+"说"+str+"\r\n"); buf1.flush(); } } str=br.readLine(); } }catch(Exception ef){ ef.printStackTrace(); } } }
服务端的代码如下
package Wangluo; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; public class Myserver { static ArrayList<Socket> list=new ArrayList<Socket>(); public static void main(String[] args) { try { //在指定端口创建服务端套接字对象 ServerSocket server=new ServerSocket(9090); System.out.println("等待连接中"); while(true){ //等待接受客户端的连接 //必须要等到有客户端连上来,该方法才执行完毕,否则一直等待 Socket socket=server.accept(); System.out.println("连上一个客户端"+socket.getRemoteSocketAddress());//得到客户端地址 // System.out.println(socket.getLocalSocketAddress());//得到服务端地址 list.add(socket);//添加元素 tread t=new tread(socket); t.start(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
这是一个最简单的网络通信例子,也很容易懂
相关推荐
《网络协议TCP/IP教程》是一份深入探讨TCP/IP协议族的详细资料,旨在帮助学习者理解和掌握网络通信的核心原理。TCP/IP(传输控制协议/互联网协议)是互联网上广泛使用的通信协议栈,它定义了数据在网络中如何传输的...
湘潭大学 网络协议TCP/IP实验三TCP 协议分析实验报告,仅供参考
这个"网络协议TCP/IP协议课件"包含了全面的学习资源,旨在帮助你深入理解这一基础概念。以下是关于TCP/IP协议的一些关键知识点: 1. **TCP/IP模型**: - TCP/IP协议栈通常分为四层(在OSI模型中对应七层):应用层...
计算机网络协议TCP/IP是互联网通信的基础,它是众多设备和应用程序之间进行有效通信的规则集合。TCP/IP模型由四个主要层次组成:应用层、传输层、网络层和数据链路层,每一层都负责不同的功能,确保数据在互联网上...
湘潭大学网络协议TCP/IP实验一, 以太网链路层帧格式分析实验报告,仅供参考
网络协议TCP-IP分析,用实验来分析的
tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议tcp/ip协议...
适合网络编程的初学者,游戏开发,通讯软件的开发,计算机爱好者
网络安全之TCP_IP协议.pdf
《科来网络协议图之TCP-IP版》是一款极具价值的学习资源,专为理解网络协议设计,特别是TCP/IP协议族的交互与结构。这个压缩包包含了一张名为"TCP-IP.gif"的图像文件,该图以直观的方式展示了TCP/IP模型的五层结构...
TCP/IP网络协议的详细讲解
TCP/IP(Transmission Control Protocol/Internet Protocol)网络协议是互联网上最基础、最重要的通信协议栈,由四层模型组成,包括应用层、传输层、网络层和数据链路层。这个压缩包“TCPIP网络协议.rar”显然包含了...
TCP/IP(Transmission Control Protocol/Internet Protocol)网络协议是互联网上最基础、最重要的通信协议栈,它定义了数据在网络中传输的规则和标准。TCP/IP协议族由多个层次组成,包括应用层、传输层、网络层和...
在本文中,我们将深入探讨TCP(传输控制协议)和UDP(用户数据报协议)这两种主要的网络传输协议,以及它们在服务器和客户端之间的应用。 首先,TCP是一种面向连接的、可靠的传输协议。在数据传输之前,TCP会建立一...
【TCP网络与协议课件】是针对清华大学出版社出版的同名教材所编写的教学资源,由兰少华、杨余旺、吕建勇三位专家主编。这个课件深入浅出地介绍了TCP网络与协议的核心概念,是学习互联网通信协议体系的重要参考资料。...
"TCP/IP网络协议分析" TCP/IP网络协议分析是计算机网络原理课程的关键组件,它们是计算机网络通信的基础。TCP/IP协议家族包括了多种协议,它们之间的协作实现了网络通信的各个方面。 TCP/IP协议家族有四个层次:...
### TCP协议分析实验报告 #### 实验目的 ...通过本实验的学习,我们不仅掌握了TCP协议的基本工作原理,还深入了解了TCP协议的多个关键机制,这对于理解计算机网络中的数据传输机制具有重要意义。
### TCP协议分析网络实验报告知识点总结 #### 一、实验背景及目的 本实验报告针对TCP协议进行深入分析...此外,实验还帮助我们理解了HTTP和DNS等常用网络协议的工作机制,为今后进一步研究网络技术打下了坚实的基础。
网络与TCP/IP协议