Tcp网络程序设计--端口,套接字的介绍以及使用方法。简单的服务器及客户端收发信息

Tcp网络程序设计利用(Socket类编写通信程序)

利用TCP协议进行通信的两个应用程序是有主次之分的。分为服务器程序,以及客户机程序 以及程序编写的顺序

端口:端口就好比一个售票大厅,大厅(网线)就只有一个,不同的功能(程序)到达不同的窗口(端口)从而提高程序的效率。网络程序设计中的端口,并非真实的物理存在,而是一个假象的连接装置

计算机中的端口有0~665536个。但注意的是:0-1023之间的端口数用于一些知名的网络服务和应用,用户的普通网络应用程序应该使用1024以上的端口数。

套接字(Socket):提供给程序可以对外进行连接的端口,程序想要连接网络,需要操作端口,ip,网卡驱动,效验连接,数据包等

  • 套接字相当于一个门面,它把复杂的需要连接网络的操作连接的操作打包起来,构成一个插座,这个插座就是套接字,用于
  • 将应用程序与端口连接起来

客户端套接字:

语法: Socket client = new Socket(“192,168,0,1”,1100);

  • 192,168,0,1 服务器的IP地址,可以是字符串也可以是数字IP地址
  • 1100: 服务器开启的接口

常用的方法:

  • 1.getlnterputStream() 获取套接字输入流,返回lnterputStream对象,服务器返回的数据流
  • 2.getOutputStream() 获取套接字输出流,返回OutputStream对象,可以用客户端向服务器发数据
  • 3.isConnect() 判断套接字是否连接
  • 4.close() 关闭套接字

服务器套接字:
语法: ServerScoker sercer = new ServerSocket(1100)

  • 1100:服务器开启的端口

常用的方法:

  • 1.accept() 等待客户端连接,返回成功连接的Socket对象,相当于手机处于开机状态
  • 2.getlnetAddress() 返回此服务器套接字的本地地址
  • 3.isClosed() 查看服务器套接字是否关闭
  • 4.close()关闭套接字

TCP程序设计流程
TCP程序设计始终遵从 先搭建服务器,再搭建客户端

  • 1.创建服务器套接字–2.创建客户端套接字–3.服务器开启监听(accept())
  • 4.处理传输数据(同时) - - 5.启动服务器–6.启动客户端

举例:服务器及客户端收发信息

服务器程序:

import java.io.IOException;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class 服务器 {
	public static void main(String[] args) {
		try {
			ServerSocket server = new ServerSocket(1100);//创建服务器套接字
			System.out.println("服务器启动成功,等待用户接入");
			Socket client = server.accept();//等待用户接入
			System.out.println("有客户端接入,客户端IP地址:"+client.getInetAddress());
			InputStream in = client.getInputStream();
			byte[] bt = new byte[1024];
			int len = in.read(bt);
			String date = new String(bt,0,len);
			System.out.println("客户端发出的消息:"+date);
			OutputStream out = client.getOutputStream();
			String message = "我收到你的消息了,你也好呀";
			out.write(message.getBytes());//字符串换成字节数组
			client.close();//关闭服务器
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}//创建服务器套接字
		
	}
}

客户端程序:

import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;

//import org.omg.CORBA_2_3.portable.OutputStream;

public class dome {
	public static void main(String[] args) {
		try {
			Socket client = new Socket("127.0.0.1",1100);//套接字创建
			//指定服务器地址127.0.0.1  本地IP地址
			System.out.println("连接成功");
			OutputStream out = client.getOutputStream();
			String message = "服务器你好,我是客户端";
			out.write(message.getBytes());//字符串换成字节数组
			InputStream in = client.getInputStream();
			byte[] bt = new byte[1024];
			int len = in.read(bt);
			String date = new String(bt,0,len);
			System.out.println("服务器发出的消息:"+date);
			client.close();//关闭客户端
		} catch (UnknownHostException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}
}

结果如下:

服务器端:
服务器启动成功,等待用户接入
有客户端接入,客户端IP地址:/127.0.0.1
客户端发出的消息:服务器你好,我是客户端

客户端:
连接成功
服务器发出的消息:我收到你的消息了,你也好呀

发布了21 篇原创文章 · 获赞 13 · 访问量 3204

猜你喜欢

转载自blog.csdn.net/qq_42724864/article/details/104526043