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实验五 ICMP 协议分析实验报告,仅供参考
湘潭大学 网络协议TCP/IP实验七 HTTP 协议分析实验报告,仅供参考
湘潭大学 网络协议TCP/IP实验六 UDP 协议分析实验报告,仅供参考
湘潭大学 网络协议TCP/IP实验三TCP 协议分析实验报告,仅供参考
网络协议TCP/IP协议课件,写的很详细,特来分享,希望对学习网络协议TCP/IP协议的有帮助:)
湘潭大学 网络协议TCP/IP实验四FTP 协议分析实验报告,仅供参考
网络协议TCP-IP分析,用实验来分析的
计算机网络协议TCP-IP_快速入门
网络互联协议TCP网络互联协议TCP网络互联协议TCP网络互联协议TCP
湘潭大学网络协议TCP/IP实验一, 以太网链路层帧格式分析实验报告,仅供参考
湘潭大学网络协议TCP/IP实验二 IP协议分析实验、IP 数据报分片实验,仅供参考
TCP/IP的详细教程,pdf格式。 dfdfdedfd地rtrtertrttru
有关计算机网络中的TCP IP协议,包括TCP协议的发送端和接受端,C++语言编写。
介绍了基本网络原理,对学习网络的知识有很好的指导作用
适合网络编程的初学者,游戏开发,通讯软件的开发,计算机爱好者
网络安全之TCP_IP协议.pdf
TCP/IP网络协议的详细讲解
超好的网络协议tcp/ip 等等
科来网络协议图之TCP-IP版,学习网络协议,必备资源,图片中,网络分层中实现的各个协议,及每个协议的联系,看起来很直观.