客户端代码实现
package java01.SignIn;
import java.io.*;
import java.net.*;
//import ch07.section03.*;
public class socCli {
public static void main(String[] args) throws IOException {
// 指定使用本地IP
//InetAddress addr =InetAddress.getByName(null);
//System.out.println("addr = " + addr);
Socket socket = new Socket("192.168.1.122",53187);
// 将代码放在Try语句中执行,以确保程序能关闭socket
try {
//Socket socket = new Socket("192.168.1.167",8086);
//System.out.println("socket = " + socket);
BufferedReader in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
// 定义一个PrintWriter对象写输出流
PrintWriter out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())), true);
//for (int i = 0; i < 10; i++) {
out.println("192.168.1.187:8098:19网络工程2班:xxx3246");
String str = in.readLine();
System.out.println("自服务端: " + str);
// }
out.println("END");
}
finally {
System.out.println("关闭");
socket.close();
}
}
}
服务器端代码实现
package java01.SignIn;
import java.io.*;
import java.net.*;
public class SocS {
// 为这个Socket选择一个断口8080:
public static final int PORT=8098;
public static void main(String[] args) throws IOException {
ServerSocket s = new ServerSocket(8098);
// System.out.println("开始: " + s);
try {
// 生成一个Socket等待连接请求
Socket socket = s.accept();
try {
System.out.println(
"接受连接请求: " + socket);
BufferedReader in =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
// 定义一个PrintWriter对象写输出流
PrintWriter out =
new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(
socket.getOutputStream())), true);
while (true) {
String str = in.readLine();
if (str.equals("END")) {
break;
}
System.out.println("自客户端: " + str);
out.println(str);
}
// 关闭socket
}
finally {
System.out.println("关闭...");
socket.close();
}
}
finally {
s.close();
}
}
}
总结与反思:
- 这次实验只是简单实现,没用用到多线程与阻塞,也没有用到swing实现图形界面,打算以后学了js前端技术后再实现
- 没用线程只能一对一通信