* TCP 案例中的客户端。
在java中,可以使用一个类表示客户端,这个类叫做Socket
构造方法:
Socket(String host, int port): 参数host表示要连接哪台计算机。 参数port表示连接的是哪个应用程序。
因为Socket表示的是客户端,客户端要连接的是服务器,所以参数要传递服务器的ip和服务器程序的端口号.
其他方法:
OutputStream getOutputStream():获取一个输出流对象。 用来向服务器发送数据(写数据)
InputStream getInputStream(): 获取一个输入流对象, 用来读取服务器发送过来的数据(接收数据)
void close():释放资源
TCP案例客户端的实现步骤:
1. 创建一个客户端Socket对象,并指定要连接服务器的ip地址和端口号。
2. 调用getOutputStream获取一个输出流,用来向服务器写数据。
3. 调用输出流的write方法,向服务器发送消息。
4. 调用getInputStream获取一个输入流,用来读取服务器的数据。
5. 调用输入流的read方法,读取服务器发送过来的消息。
6. 关闭Socket
*/
public class Demo01Client {
public static void main(String[] args) throws IOException {
//创建一个客户端Socket对象,并指定要连接服务器的ip地址和端口号
Socket socket = new Socket("127.0.0.1", 9990);
//调用getOutputStream获取一个输出流,用来向服务器写数据。
OutputStream out = socket.getOutputStream();
//调用输出流的write方法,向服务器发送消息
out.write("你好啊".getBytes());
//调用getInputStream获取一个输入流,用来读取服务器的数据。
InputStream in = socket.getInputStream();
//调用输入流的read方法,读取服务器发送过来的消息。
byte[] bArr = new byte[1024];
int len = in.read(bArr);
System.out.println(new String(bArr, 0, len));
//释放资源
socket.close();
}
}
tcp案例中的服务器端
java中,有一个类可以表示服务器,这个类叫做ServerSocket。
构造方法:
ServerSocket(int port): 参数需要传递一个端口号。 此端口号表示的是这个服务器程序的端口号。
其他方法:
Socket accept(): 监听并获取客户端Socket。 等待客户端的请求,如果客户端发来请求,就可以获取到客户端Socket
TCP服务器端实现步骤:
1. 创建一个ServerSocket对象,这个对象表示的是服务器
2. 调用ServerSocket的accept方法,监听并获取一个客户端Socket对象。
3. 通过客户端Socket对象,获取输入流,用来读取数据。
4. 调用输入流的read方法,读取数据。
5. 通过客户度Socket对象,获取输出流,用来写数据。
6. 调用write方法,写数据。
7. 释放资源
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Demo02Server {
public static void main(String[] args) throws IOException {
//创建一个ServerSocker对象,这个对象表示的是服务器
ServerSocket serverSocket=new ServerSocket(9990);
//调用ServerSocket的accept方法,监听并获取一个客户端Socket对象。
Socket socket = serverSocket.accept();
//3. 通过客户端Socket对象,获取输入流,用来读取数据。
InputStream in = socket.getInputStream();
//4. 调用输入流的read方法,读取数据。
byte[] bArr = new byte[1024];
int read = in.read(bArr);
//通过客户度Socket对象,获取输出流,用来写数据。
OutputStream out = socket.getOutputStream();
out.write("我收到了消息".getBytes());
//释放资源
socket.close();
serverSocket.close();
}
}