一.服务器和客户端
1.客户端
当我们打开百度,输入我们想要查找的某个关键词,之后点击百度一下,我们就收到了一个有着各种链接的网页。
这个过程,作为我们,就是客户端。
2.服务器
我们即发送了信息,也接收了信息。而对于百度网站来说,就像是服务器端,即接收了信息,也发送了信息。
综上,服务器和客户端是一个相对的概念。客户端先发送消息,再收到回复。服务器端先收到消息,然后在发送消息。
二.TCP协议
1.传输层协议
2.有链接
3.可靠协议
4.面向字节流
注意:
可靠协议:消息发送方发送完消息后,一定要确保对方收到消息
不可靠协议:消息发送方只管发消息,不需要知道对方有没有收到消息
三.如何编写“服务器-客户端”聊天程序
把问题抽象一下,就是如何交互
客户端如何发送信息,如何接收信息。
服务器端如何接收信息,如何发送信息。
1.我们从实现服务器开始。Java提供了这样的一个类,ServerSocket。我们通过实例化它的方式来创建一个服务器。注意一下,创建服务器需要一个参数port,port指的是端口号。我们知道一台计算机上运行着许多程序,那么,对于另一台计算机来说,它想要连接到这台计算机的这个程序,该如何做呢?首先当然是根据IP连接到这台计算机,那么,然后呢?就是通过我们的port端口号了。正常情况下,计算机会自动我们创建的程序分配一个port,但是,因为我们创建的是提供给别的计算机连接的服务器,所以我们需要指定一个端口号供给外部计算机来进行连接。注意一下,计算机有的端口号已经被其他程序占用了,要想查看,你可以通过在cmd命令行输入netstat -an来查询。在这里,我们给定我们的端口号为空闲的1234。
2.客户端的创建与服务器的创建差不多,只是要注意一下内容上的匹配。
四.程序代码
1.服务器
package tcp.http1;
/*
这个客户端服务器实现了简单的聊天功能,客户端和服务器可以互相发送任意多条消息
客户端:......
服务器:......
客户端:......
服务器:......
*/
import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
/*
创建服务器套接字用ServerSocket
创建客户端套接字用Socket
*/
public class Server {
public static void main(String[] args) throws IOException {
//1.创建绑定到指定端口的服务器套接字
ServerSocket tcpServerSocket=new ServerSocket(1234