您的位置:首页 > 理论基础 > 计算机网络

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是发送端与接收端随便先开哪个都可以。
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: