package socket;
import java.awt.im.InputSubset;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class Client {
/*
* java.net.Socket
* Socket封装了TCP协议的通讯细节,是该过程
* 抽象为通过两个流的读写完成与远端计算机的数据交换
* Socket的本地翻译为:套接字
*/
private Socket socket;
/*
* 构造方法。初始化客户端
*/
public Client(){
try{
/*
* 实例化Socket的同时需要传入两个参数
* 参数:
* 1.服务端的ip地址
* 2.服务端所使用的端口号
*
* 通过IP地址可以找到服务端计算机
* 通过端口可以连接到运行的服务端计算机上的服务端应用程序。
* 而我们客户端自身的IP和端口无需指定,系统会分一个端口
* 并且连接后会发送给服务端
* 实例化Socket的过程就是发起连接的过程,若服务端
* 没有响应则这里会直接抛出异常
*/
System.out.println("正在连接服务端....");
socket = new Socket("localhost",8088);
System.out.println("已连接服务端....");
}catch(Exception e){
e.printStackTrace();
}
}
/*
* 程序开始工作的方法
*/
public void start(){
try{
Scanner scanner = new Scanner(System.in);
/*
* Socket提供的方法:
* OutputStream getOutputStream();
* 返回一个字节输出流,通过该输出流写出的数据最终会法师给服务端
*/
OutputStream out =
socket.getOutputStream();
OutputStreamWriter osw
=new OutputStreamWriter(out,"UTF-8");
BufferedWriter bw
= new BufferedWriter(osw);
PrintWriter pw
= new PrintWriter(bw,true);
InputStream in = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(in,"UTF-8");
BufferedReader br = new BufferedReader(isr);
String line = null;
while(true){
line = scanner.nextLine();
pw.println(line);
//读取服务器端发送过来的一行字符串
line = br.readLine();
System.out.println(line);
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args){
Client client = new Client();
client.start();
}
}
JAVA聊天室七
最新推荐文章于 2023-12-08 13:09:15 发布