简单的服务器与客户端相连接
- 理解TCP/IP协议
对于TCP/IP协议,百度百科对它的定义用于多个网络之间相互传递数据信息的协议簇 现如今几乎所有电脑进行通信所遵循的一个协议
那么如何来理解(TCP/IP)协议?
就我个人而言,我对协议的理解就是:
共识就是我们所共同遵循的一套准则,就是类似于那种谍战片里面的特务对接说暗号一样,他又一个规定的格式与说法,人与人之间、者说机器与机器之间要进行交互,交流、协同合作时,就需要达成一个交流的共识!
比如中国人与人中国之间通过讲普通话来表达双方的想法和意愿,以达到协作的目的,那么依次可知,机器之间的相互协同也是需要一个共识而如今这个TCP/IP协议就是这个共识。
大致流程就是,
我通过网络来获取我想要联系的机器的IP地址(可以在电脑上查,搜索网络属性,IPv4地址),与它建立起连接连接成功后就相当于我这台机器与另一台机器接起了一条无形的数据传输线路对方的数据可以通过这条线路以字节的形式发送给我,我的数据也可以通过这条线路以字节的形式发送给对方。
一句话来讲:TCP/IP协议就是计算机之间进行交互、协作所共同遵循的一个共识
2、服务器与客户端
服务器:(百度百科的定义是)服务器也是计算机的一种,比普通计算机运行更快、负载更高、价格更贵。服务器在网络中为其它客户机(如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。根据服务器所提供的服务,一般来说服务器都具备承担响应服务请求、承担服务、保障服务的能力。服务器作为电子设备,其内部的结构十分的复杂,但与普通的计算机内部结构相差不大,如:cpu、硬盘、内存,系统、系统总线等。(是具有很强大的运算能力,以及数据吞吐能力,能为客户机(即用户端)提供所需的服务,并能长时间保障服务的一种计算机)
客户端:客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,一般安装在普通的客户机上,需要与服务端互相配合运行 。(是一个为用户提供直接服务,并且与服务器互相合作,反馈信息的东东)
有了这些基础知识:那么我们来用JAVA(用其他语言实现的还正在研究哈哈)实现一个简单的服务器与客户端相连接的功能
实现步骤:
创建一个服务器(Java.net.SeverSocket)–>等待客户机的接入–>客户机接入后(即客户机与服务器之间建立了一个连接)这样实现了一个客户端和服务器的连接!
至于后续的数据传输,则只需要在连接成功后,获取客户端的输入输出流,通过输入输出流在客户端与服务器之间进行一个数据传输就行了!
代码部分:
public class Sever(){
//创建服务器
/**
*@parm port(这个port其实是一个标签的意思,就是在特定的IP地址下、创建的标示为port的服务器)
*/
public void setSever(int port){
try{
//创建服务器 java.net.SeverSocket
java.net.SeverSocket sever=new ServerSocket(port);
//输出服务器创建成功
System.out.println("服务器创建成功!");
//等待客户机的接入
java.net.Socket client=sever.accept();//Line1
//如果没有客户机接入的的话,他会一直卡在Line1,不会执行下面的代码
//如果有客户机连接上来了就输出有客户机连接成功了
System.out.println("有客户端连接进来了!");
}catch(Exception ed){
System.out.println("服务器创建失败!");
ed.printStackTrace();
}
}
//主函数
public static void main(String[] args){
//创建服务器
Sever ss=new Sever();
ss.setSever(9999);
}
}
然后是创建一个客户端,去连接服务器
//客户端
public class Client(){
//连接服务器
public void connectSever(){
try{
//连接服务器 127.0.0.1是每台电脑固定的本机IP地址,9999是刚刚创建的服务器的标识
java.net.Socket client=new Socket("127.0.0.1",9999);
System.out.println("连接服务器成功!");
}catch(Exception ed){
System.out.println("连接服务器失败!");
ed.printStackTrace();
}
}
//主函数
public static void main(String[] args){
Client cli=new Client();
cli.connectSever();
}
}
这样就实现了一个简单的服务器连接了!接下来就可以在服务器之间进行数据交换了,下一篇博客我将为大家分享一下我的一个简单的网络实时画图板,然后进一步实现一个视频通信,最后实现一个类似于腾讯会议的小界面,有兴趣的小伙伴可以一起来实现啊!
我的QQ是:2058084624
我的邮箱是:2058084624@qq.com
我的微信是:18975010038