Java网络编程

TCP传输控制协议,IP网络互联协议,TCP的三次握手是为了建立连接

TCP,有链接,不会丢包,可以重新传输数据,有序安全;UDP无连接,不保证可靠,可能会丢包

IP地址,唯一标识网络上的计算机,端口号唯一标识计算机中的进程,

Socket(套接字)是IP地址与端口号的组合

Java中的Socket类是网络编程相关的类

ServerSocket类是可以创建服务器的套接字,Socket类是可以创建客户端的套接字

网络架构:B/S架构,浏览器端与服务器,基于浏览器,比如网页版淘宝抖音等

                  C/S架构,客户端服务器,基于特定客户端,比如下载的淘宝app等

一个简单的网络通信代码

//客户端
	public static void main(String[] args) throws UnknownHostException, IOException {
		// 创建客户端对象,并根据主机与端口链接服务端
		Socket s = new Socket("127.0.0.1", 8848);
		// 给服务端消息
		PrintWriter pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
		// 接收服务端发送来的消息
		BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8"));
		String msg = null;
		Scanner scanner = new Scanner(System.in);
		while (!"exit".equals((msg = scanner.nextLine()))) {

			// 发送给服务端键盘输入的信息
			pw.println(msg);
			pw.flush();

			// 打印服务端的消息
			System.out.println(br.readLine());
		}
		pw.close();
		br.close();
		s.close();
		System.out.println("客户端关闭");
	}

服务端


		// 创建服务器对象并指定端口,端口需要未被占用
		ServerSocket ss = new ServerSocket(8848);
		// 等待接收客户端的消息,会一直等待,直到接收到链接对象
		Socket s = ss.accept();
		System.out.println("客户端链接成功");

		// 返回给客户端消息
		PrintWriter pw=new PrintWriter(new OutputStreamWriter(s.getOutputStream(),"UTF-8"));
		
		// 获取客户端的消息,获取客户端输入流并转为缓存流
		BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream() ));
		Scanner scanner=new Scanner(System.in);
		String input=null;

		System.out.println(br.readLine());
		while (!"退出".equals((input=scanner.nextLine()))) {
			
			//发送输入消息
			pw.println(input);
			pw.flush();

			System.out.println(br.readLine());
			// 打印客户端发送的消息
		}
		pw.close();
		br.close();
		ss.close();
		System.out.println("服务器已关闭");
	

易出现的错误

端口号被占用

服务器没有启动,或者IP地址或端口号没对应上写错了

待补充。。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值