实例小项目为Chat聊天室。在com.sknomy.chat包下创建两个类,服务端Server,客户端Client。演示客户端怎样与服务端相连,并将用户输入的信息传递到服务端。
源代码:
服务端Server.java文件中的代码:
package com.sknomy.chat;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
/**
* 聊天客户端
* @author sknomy
*
*/
public class Client {
/*
* java.net.Socket
* 封装了TCP通讯的类。使用它就可以基于TCP协议进行网络通讯。
* 通讯的过程:
* 1.通过实例化Socket来连接服务端
* 2.建立连接后,可以通过Socket获取两个流
* 输入流:用来读取服务端发送过来的数据
* 输出流:用来将数据发送给服务端。
*/
private Socket socket;
/**
* 构造方法,用来初始化客户端
* @throws Exception
*/
public Client() throws Exception{
try {
/*
* 实例化Socket就是连接服务端的过程
*/
System.out.println("正在连接服务端...");
socket = new Socket(
"localhost",//远程计算机地址 localhost表示本机
8088 //服务端端口
);
System.out.println("服务端已连接");
} catch (Exception e) {
throw e;
}
}
/**
* 客户端开始工作的方法
*/
public void start() throws Exception {
try {
/*
* 若想将数据发送至远端计算机(对于客户端这边而言,远端就是服务端),可以通过
* Socket获取输出流,将数据通过该流写出即可发送至服务端。
*/
OutputStream out = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(out,"utf-8");
PrintWriter pw = new PrintWriter(osw,true);
Scanner scanner = new Scanner(System.in);
String str = null;
//向服务端发送消息,直到输入 exit程序退出
System.out.println("请从键盘输入:");
while(true) {
str = scanner.nextLine();
pw.println(str);
if("exit".equals(str)) {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
Client client = new Client();
client.start();
} catch (Exception e) {
System.out.println("客户端启动失败!");
e.printStackTrace();
}
}
}
客户端Client.java文件中的代码:
package com.sknomy.chat;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
/**
* 聊天客户端
* @author sknomy
*
*/
public class Client {
/*
* java.net.Socket
* 封装了TCP通讯的类。使用它就可以基于TCP协议进行网络通讯。
* 通讯的过程:
* 1.通过实例化Socket来连接服务端
* 2.建立连接后,可以通过Socket获取两个流
* 输入流:用来读取服务端发送过来的数据
* 输出流:用来将数据发送给服务端。
*/
private Socket socket;
/**
* 构造方法,用来初始化客户端
* @throws Exception
*/
public Client() throws Exception{
try {
/*
* 实例化Socket就是连接服务端的过程
*/
System.out.println("正在连接服务端...");
socket = new Socket(
"localhost",//远程计算机地址 localhost表示本机
8088 //服务端端口
);
System.out.println("服务端已连接");
} catch (Exception e) {
throw e;
}
}
/**
* 客户端开始工作的方法
*/
public void start() throws Exception {
try {
/*
* 若想将数据发送至远端计算机(对于客户端这边而言,远端就是服务端),可以通过
* Socket获取输出流,将数据通过该流写出即可发送至服务端。
*/
OutputStream out = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(out,"utf-8");
PrintWriter pw = new PrintWriter(osw,true);
Scanner scanner = new Scanner(System.in);
String str = null;
//向服务端发送消息,直到输入 exit程序退出
System.out.println("请从键盘输入:");
while(true) {
str = scanner.nextLine();
pw.println(str);
if("exit".equals(str)) {
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
Client client = new Client();
client.start();
} catch (Exception e) {
System.out.println("客户端启动失败!");
e.printStackTrace();
}
}
}
开启服务端的界面:
运行客户端连接服务端的界面:
演示客户端向服务端传递消息: