26-网络编程-11-网络编程(TCP协议-服务端)
2015-08-11 17:22
501 查看
/* * 【需求】服务端接收客户端发送过来的数据,并打印在控制台上。 * * 建立TCP服务端的思路: * * 1.创建服务端Socket服务,通过ServerSocket。 * * 2.服务端必须对外提供一个端口,否则客户端无法连接。 * (连接服务器:明确服务器所在主机的ip地址,明确服务器中提供服务的软件的端口号,有了这两个信息,即可连接到服务器) * * 3.获取连接过来的客户端对象。 * (图解见桌面文件26Internet11,图中两个客户端c1和c2分别向服务端发送数据,当c1发送时,服务端拿到c1对象,从而获取 * c1中的输入流,获取c1中发过来的数据,c2同理,所以服务端在向外发送数据时不会乱。) * * 4.通过客户端对象获取Socket流,读取客户端发来的数据并打印在控制台上。 * * 5.关闭资源:【切记】关两个资源——客户端和服务端。 * (原因:设有c1和c2两个客户端,读取完c1和c2数据后,若客户端c3想连接服务端,没位子,所以在读取完客户端数据后,必须 * 将其关闭,节省资源) */ package demo; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; public class TCPDemo2 { public static void main(String[] args) throws IOException { //1.创建服务端对象 ServerSocket ss = new ServerSocket(10000);//【注意】这里必须明确与客户端一致的端口号 //2.获取连接过来的客户端对象 /** * 打开API,点进java.net包,找到ServerSocket类,其内有方法: * public Socket accept()throws IOException:侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。 * 可用于获取连接过来的客户端对象。(套接字就是Socket) */ Socket s = ss.accept(); String ip = s.getInetAddress().getHostAddress(); //getInetAddress()获取ip地址,getHostAddress()获取ip地址的字符串表现形式。 //3.通过Socket对象获取输入流,准备读取客户端发来的数据 InputStream in = s.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); String text = new String(buf,0,len); System.out.println(ip+":"+text); //4.关闭资源 ss.close(); s.close(); } } /** * 【注意】 * 对于TCP的客户端与服务端进行数据传输,必须先开启服务端,这个与UDP不同,UDP是发送端与接收端随便先开哪个都可以。 */
相关文章推荐
- 26-网络编程-09-网络编程(UDP协议-聊天程序)
- 26-网络编程-08-网络编程(UDP协议-接收端)
- 网络中的长连接和短链接
- 26-网络编程-07-网络编程(UDP协议-发送端)
- 26-网络编程-06-网络编程(域名解析)
- 26-网络编程-05-网络编程(IP对象_InetAddress)
- Android 网络学习之使用多线程下载,支持断点续传
- 26-网络编程-03-网络编程(网络要素-端口)
- 26-网络编程-04-网络编程(网络要素-传输协议)
- 26-网络编程-02-网络编程(网络要素-IP地址)
- 26-网络编程-01-网络编程(网络模型概述)
- HTTPS 双向认证
- RTP-RTCP协议分析
- android--访问网络权限
- 谈谈如何训练一个性能不错的深度神经网络
- android访问网络--okhttp
- 小点滴——网站视频下载——摘自网络
- 【chrome错误】Cross origin requests are only supported for protocol schemes: http, data,chrome-extension
- UNIX网络编程卷一:第十三章 守护进程和inetd超级服务器
- VirtualBox 网络连接方式设置以及硬件虚拟化