当前位置:首页 > CN2资讯 > 正文内容

java mail服务器 java怎么写服务器

2天前CN2资讯


web服务器获取一个用户的连接时,会初始化一个线程和用户通信,代码如下:



import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.PrintStream; import .Socket; //每有一个连接建立时,服务器分出一个通信的线程 public class CommunicateThread extends Thread{ //与客户端通信的套接字 Socket client; public CommunicateThread(Socket s) { client = s; } //获取浏览器请求资源的路径 public String getResourcePath(String s){ // 一般的HTTP请求报文的第一行是“GET /index.html HTTP/1.1” // 我们要获取的就是中间的"/indext.apsx" //获取资源的位置 String s1 = s.substring(s.indexOf( ' ' )+ 1 ); s1 = s1.substring( 1 ,s1.indexOf( ' ' )); //默认资源为index.html if (s1.equals( "" )) s1 = "index.html" ; return s1; } public void sendFile(PrintStream out,File file){ try { DataInputStream in = new DataInputStream( new FileInputStream(file)); int len = ( int )file.length(); byte buf[] = new byte [len]; in.readFully(buf); //读取文内容到buf数组中 out.write(buf, 0 ,len); out.flush(); in.close(); } catch (Exception e){ System.out.println(e.getMessage()); System.exit( 1 ); } } public void run(){ try { //获取用户的IP地址和端口号 String clientIP = client.getInetAddress().toString(); int clientPort = client.getPort(); //创建输出流对象 PrintStream out = new PrintStream(client.getOutputStream()); //创建输入流对象 DataInputStream in = new DataInputStream(client.getInputStream()); //读取浏览器提交的请求 String msg = in.readLine(); //获取文件路径 String fileName = getResourcePath(msg); System.out.println( "The user asked for resource: " +fileName); File file = new File(fileName); if (file.exists()){ //根据响应报文格式设置 System.out.println(fileName+ " start send" ); out.println( "HTTP/1.0 200 OK" ); out.println( "MIME_version:1.0" ); out.println( "Content_Type:text/html" ); int len = ( int ) file.length(); out.println( "Content_Length:" +len); out.println( "" ); //报文头和信息之间要空一行 //发送文件 sendFile(out,file); out.flush(); } client.close(); } catch (Exception e){ System.out.println(e.getMessage()); } } }



服务器主要负责初始化套接字和线程,代码如下:




import .ServerSocket; import .Socket; public class WebServer { public static void main(String[] args) { int Port = 12345 ; //端口号,由于这里是测试,所以不要使用常用端口 //创建两个套接字 ServerSocket server = null ; Socket client = null ; try { server = new ServerSocket(Port); //服务器开始监听 System.out.println( "The WebServer is listening on port " +server.getLocalPort()); while ( true ){ client = server.accept(); //多线程运行 new CommunicateThread(client).start(); } } catch (Exception e){ System.out.println(e.getMessage()); } } }


运行测试:

编写一个index.html文件


<h1>This is the index of my WebServer</h1><hr>


放到项目文件的根目录,然后在浏览器地址栏输入:“localhost:12345/index.html”,就可以看到位于服务器端的html文件了。注意由于服务器是死循环,重启服务器会发现指定的端口已被绑定,只需要进入任务管理器,关闭"Java(TM) Platfrom SE binary"进程即可。最后结果如下所示:

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/23785.html

    分享给朋友:

    “java mail服务器 java怎么写服务器” 的相关文章

    轻松注册RackNerd账号:快速指南与优惠攻略

    RackNerd是一家成立于2017年的国外主机商,专注于为用户提供高质量的虚拟主机、VPS主机、独立服务器和服务器托管等服务。从成立之初,RackNerd就致力于为全球用户提供稳定、高效的主机解决方案,凭借其优质的服务和灵活的配置选项,迅速在行业内赢得了良好的口碑。 RackNerd的服务类型非常...

    WordPress登录验证设置:提升网站安全性与用户体验

    在使用WordPress构建网站时,登录验证设置是确保用户身份安全和信息保护的重要环节。它不仅涉及用户从何处进入网站,更关乎整个网站的安全性能。在这章中,我将为你详细解析什么是WordPress登录验证,它的重要性以及基本的流程。 什么是WordPress登录验证 WordPress登录验证主要是通...

    国外CDN推荐:提升网站速度与安全的选择

    在这个数字化时代,CDN(内容分发网络)的重要性逐渐凸显。许多网站为了提高用户体验,确保内容能够快速、安全地到达用户的设备,纷纷开始引入CDN服务。那么,CDN到底是什么?它的功能和运作原理又是怎样的呢? 简单来说,CDN是一个分布式的网络,旨在提高网站的加载速度和可用性。它通过在全球范围内部署一系...

    Linode云服务详解:高效、可靠的VPS解决方案

    在云计算领域,Linode无疑是一颗冉冉升起的星星。作为一家成立于2003年的美国VPS(虚拟专用服务器)提供商,Linode专注于打造高效、易用的云服务,涵盖虚拟专用服务器以及多种相关服务。其创始人Christopher S. Aker的愿景是让每个人都能通过简单、可靠的方式利用强大的计算能力。而...

    VAiCDN:提升用户访问体验的专业CDN解决方案

    在当今互联网时代,内容交付网络(CDN)成为了确保网站和应用顺畅运行的重要工具。VAiCDN 作为一家专业的 CDN 运营商,旨在为用户提供卓越的网络体验。同时,VAiCDN 的使命是推动全球内容交付的标准,以高效、安全的方式满足不同客户的需求。 从背景来看,VAiCDN成立初衷是为了应对日益复杂的...

    2024年如何获取免费VPS服务:开发者的最佳选择

    在解释什么是免费VPS之前,我想先来聊聊“VPS”这个概念。虚拟专用服务器(VPS)可以理解为一种在服务器上创建多个虚拟环境的技术。这些环境如同独立的服务器,用户可以在上面进行程序的开发和测试。而“免费VPS”则意味着用户可以在一定的限度内,无需付费地使用这些虚拟环境。对于初创公司或个人开发者而言,...