赞
踩
网络编程可分为B/S(浏览器与服务器)程序与C/S(客户端与服务器)程序,本文将针对TCP协议的C/S程序的相关知识,进行一些简单的梳理与总结。
需要使用到两个类来编写TCP协议的C/S程序,分别为:
用于创建服务器 。 创建完毕后, 会绑定一个端口号.,然后此服务器可以等待客户端连接 , 每连接一个客户端 , 服务器就会得到一个新的Socket对象。
ServerSocket(int port);
创建一个基于TCP/IP协议的服务器 , 并绑定指定的端口号. 注意: 参数port的范围是: 0-65535 (建议1025-65535,因为前面的端口可能已经被占用)
Socket accept();
等待客户端连接。注意,此方法会导致线程的阻塞,直到一个新的客户端连接成功, return Socket对象后, 线程才会继续执行
void close();
释放占用的端口号并关闭服务器.
是两台计算机之间通信的端点 , 是网络驱动提供给应用程序编程的一种接口 ,一套标准, 一种机制。
Socket(String ip,int port)
创建一个套接字, 并连接指定ip和端口号的服务器。
参数1: 服务器的ip地址;
参数2: 服务器软件的端口号。
OutputStream getOutputStream();
返回的是 , 指向通通信的另一端点的输出流。
InputStream getInputStream();
返回的是 , 指向通信的另一端点的输入流
void close();
关闭套接字
注意:在网络编程时, 获取输入输出流的操作 ,对于客户端与服务器来说是相对的 。客户端的输入流输入的是服务器的输出流输出的内容;客户端的输出流输出到了服务器的输入流中。 所以在使用时, 需要注意以下一点规则:
客户端与服务器获取流的顺序必须是相反的:。例如:客户端先得到了输入流 , 那服务器必须先获取输出流
package demo; import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * 网络编程 */ public class Demo1 { /** * TCP协议 * 服务器 * @param args */ public static void main(String[] args) throws IOException { //搭建一个服务器 ServerSocket server = new ServerSocket(55565); //服务器启动完毕 System.out.println("服务器启动完毕"); //等待客户端的连接 Socket socket = server.accept(); System.out.println("一个客户端连接了"); //服务器给客户端发消息 //获取输出流 OutputStream os = socket.getOutputStream(); //转成打印流 PrintStream ps = new PrintStream(os); ps.println("欢迎你连接服务器"); //服务器接收客户端的消息 InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String text = br.readLine(); System.out.println("服务器接收到客户端的回复:"+text); System.out.println("服务器程序执行结束"); } }
package demo; import java.io.*; import java.net.Socket; public class ClientDemo1 { /** * 客户端U * @param args */ public static void main(String[] args) throws IOException { Socket socket = new Socket("127.0.0.1",55565);//参数1也可以写localhost //客户端可以接收服务器发来的消息 //获取输入流 InputStream is = socket.getInputStream(); //转成BufferReader ,可以一次读一行 BufferedReader br = new BufferedReader(new InputStreamReader(is)); //读取 String text = br.readLine(); System.out.println("客户端接到消息:"+text); //客户端也可以给服务器发消息 OutputStream os = socket.getOutputStream(); PrintStream ps = new PrintStream(os); ps.println("服务器你好"); } }
以上内容为小白最近学习到的网络编程知识,主要是为了对自己的学习进行一个归纳整理,希望大家可以多多指教。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。