额。。敲里凉。
先写一下遇到的状况:
在ide里面 推荐将run方法上的override去掉,以及推荐将socket 定义为final 说他是内部类, (mmp 你全家都是内部类)。
刚开始的时候问了一下大佬,大佬说这个问题可以算作没导入正确的类库。是ide里面导入jdk版本的问题。
(我eclipse是下的最新的版本) 于是将 java compiler改为l.7(右击项目->properties->搜索java compiler);
嘿嘿override不报错了。可是这个ide还是一口咬定内部类。
解决问题:
于是我想, 我这个eclipse是最新版本的。 我全部改成1.8试试呢。于是将libraries 和compiler 系统的环境都改成了1.8。这就不报错了。希望对大家有用
package com.fuchanghai.nio;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TraditionalSocketDemo2{
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(7777);
System.out.println("服务端启动, 端口为:7777");
while(true){
// 获取socket套接字
// accept()阻塞点
Socket socket = serverSocket.accept();
System.out.println("有新客户端连接上来了...");
new Thread(new Runnable() {
@Override
public void run() {
try {
// 获取客户端输入流
InputStream is = socket.getInputStream();
byte[] b = new byte[1024];
while(true){
// 循环读取数据
// read() 阻塞点
int data = is.read(b);
if(data != -1){
String info = new String(b,0,data,"GBK");
System.out.println(info);
}else{
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
}