4、把家里的主机改装成服务器。我搜了一些资料,感觉自己对服务器的了解太少了,根本看不懂什么内网穿透,看不懂什么SSH、Apach,还有什么内网外网,公网ip,局域网。。。。
我需要专门的学习服务器的相关知识,408的知识不够具体,不够专门。找到了两个博客,一个是实现内网穿透(让外网可以访问本机的某个端口号),一个是tomcat原理。都尝试一下。
用浏览器连接自制服务器的对应端口。如果说可以的话,其实浏览器就是使用socket连接服务器的socketserver,然后服务器接收网址,对网址解析,然后返回对应的html文件。这样是可以的,但是涉及到公网就不行了,我也不知道为什么。。。
使用浏览器的模式,开发一个世界聊天系统。也就是通过网址的参数输入聊天内容,写入对应的文件的下一行,然后返回这个文件,在浏览器显示。
如果写入后,再写入,则内容是叠加的,不会覆盖之前的网页.
有两个问题,一个是外网,就算是用了cpolar也不能访问这个服务器,但实际上是可以访问那个网址的,而且我的服务器也发出信息了,但是网页显示502错误,这个也是我没弄懂的,配置到服务器也一样,外网访问不了,可能tomcat还有其他很多我没学的东西,另一个是ServerSocket(x,x,inetaddress())这个构造器会报错,Net_Bind,没搜到解答
import java.net.*;
import java.io.*;
public class Tomcat
{
public static void main(String[] args)
{
try{
//读取index.html
File file = new File("E:\\cpolar\\html\\index.html");
ServerSocket server = new ServerSocket(6000,1 , InetAddress.getByName("8.130.49.194"));//这里报错了。。
while(true)
{
Socket s = server.accept();
OutputStream output = s.getOutputStream();
System.out.println("接收到了信号!");
byte[] buffer = new byte[1024];
FileInputStream fis = new FileInputStream(file);
int ch = fis.read(buffer,0,1024);
System.out.println(ch);
while(ch != -1)
{
output.write(buffer,0,ch);
ch = fis.read(buffer,0,1024);
}
fis.close();
output.write("Hello World!".getBytes());
System.out.println("发送了消息");
output.close();
s.close();
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}
<body>
无敌<br>
哈哈哈哈哈哈
<title>啦啦啦</title>
</body>
import java.net.*;
import java.io.*;
public class Client
{
public static void main(String[] args)
{
try
{
Socket socket = new Socket("http://3a902c61.cpolar.io/",80);
InputStream input = socket.getInputStream();
OutputStream output = socket.getOutputStream();
byte[] buffer = new byte[1024];
input.read(buffer);
System.out.println(new String(buffer));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}