課程
/后端開(kāi)發(fā)
/Java
/Java Socket應(yīng)用---通信是這樣練成的
我們老師布置的課程設(shè)計(jì),已經(jīng)做了兩天了,還是做不出來(lái)。做了兩天
2017-10-26
源自:Java Socket應(yīng)用---通信是這樣練成的 3-4
正在回答
哪位美麗帥氣高端大氣的資深大神可以幫忙用圖像化界面來(lái)實(shí)現(xiàn)下面的代碼嗎?-此致,敬禮!
package com.tomcat; ?
import java.io.File; ?
import java.io.IOException; ?
import java.io.InputStream; ?
import java.io.OutputStream; ?
import java.net.InetAddress; ?
import java.net.ServerSocket; ?
import java.net.Socket; ?
?
public class HttpServer { ?
? ? public static final String ?WEB_ROOT=System.getProperty("user.dir") + File.separatorChar + "webRoot"; ?
? ? private static final String SHUTDOWN_COMMAND = "/SHUTDOWN"; ?
? ? private boolean shutdown = false; ?
? ? public static void main(String []args){ ?
? ? ? ? HttpServer server = new HttpServer(); ?
? ? ? ? server.await(); ?
? ? } ?
? ? public void await(){ ?
? ? ? ? ServerSocket serverSocket = null; ?
? ? ? ? int port = 8080; ?
? ? ? ? try{ ?
? ? ? ? ? ? serverSocket = new ServerSocket(port,1,InetAddress.getByName("127.0.0.1")); ?
? ? ? ? }catch(Exception e){ ?
? ? ? ? ? ? e.printStackTrace(); ?
? ? ? ? ? ? System.exit(1); ?
? ? ? ? } ?
? ? ? ? while(!shutdown){ ?
? ? ? ? ? ? Socket socket = null; ?
? ? ? ? ? ? InputStream in = null; ?
? ? ? ? ? ? OutputStream out = null; ?
? ? ? ? ? ? try { ?
? ? ? ? ? ? ? ? socket = serverSocket.accept(); ?
? ? ? ? ? ? ? ? in = socket.getInputStream(); ?
? ? ? ? ? ? ? ? out = socket.getOutputStream(); ?
? ? ? ? ? ? ? ? Request request = new Request(in); ?
? ? ? ? ? ? ? ? request.parse(); ?
? ? ? ? ? ? ? ? Response response = new Response(out); ?
? ? ? ? ? ? ? ? response.setRequest(request); ?
? ? ? ? ? ? ? ? response.sendStaticResource(); ?
? ? ? ? ? ? ? ? socket.close(); ?
? ? ? ? ? ? ? ? shutdown = request.getUri().equals("SHUTDOWN_COMMAND"); ?
? ? ? ? ? ? } catch (IOException e) { ?
? ? ? ? ? ? ? ? e.printStackTrace(); ?
? ? ? ? ? ? ? ? continue; ?
? ? ? ? ? ? } ?
} ?
----------------------------------------------------------------------------------------------------
??
public class Request { ?
? ? private InputStream input; ?
? ? private String uri; ?
? ? public Request(InputStream input){ ?
? ? ? ? this.input = input; ?
? ? public void parse(){ ?
? ? ? ? StringBuffer request = new StringBuffer(2048); ?
? ? ? ? int i; ?
? ? ? ? byte [] buffer = new byte[2048]; ?
? ? ? ? ? ? i = input.read(buffer); ?
? ? ? ? }catch(IOException e){ ?
? ? ? ? ? ? i = -1; ?
? ? ? ? for(int j=0;j<i;j++){ ?
? ? ? ? ? ? request.append((char)buffer[j]); ?
? ? ? ? System.out.println(request.toString()); ?
? ? ? ? uri = parseUri(request.toString()); ?
? ??
? ? private String parseUri(String requestString){ ?
? ? ? ? int index1,index2; ?
? ? ? ? index1 = requestString.indexOf(' '); ?
? ? ? ? if(index1 != -1){ ?
? ? ? ? ? ? index2 = requestString.indexOf(' ', index1+1); ?
? ? ? ? ? ? if(index2 > index1){ ?
? ? ? ? ? ? ? ? return requestString.substring(index1+1,index2); ?
? ? ? ? return null; ?
? ? public String getUri(){ ?
? ? ? ? return uri; ?
----------------------------------------------------------------------------
import java.io.FileInputStream; ?
public class Response { ?
? ? private static final int BUFFER_SIZE=1024; ?
? ? Request request; ?
? ? OutputStream out; ?
? ? public Response(OutputStream out){ ?
? ? ? ? this.out = out; ?
? ? public void setRequest(Request request){ ?
? ? ? ? this.request = request; ?
? ? public void sendStaticResource() throws IOException{ ?
? ? ? ? byte []bytes = new byte[BUFFER_SIZE]; ?
? ? ? ? FileInputStream fis = null; ?
? ? ? ? ? ? File file = new File(HttpServer.WEB_ROOT,request.getUri()); ?
? ? ? ? ? ? if(file.exists()){ ?
? ? ? ? ? ? ? ? fis = new FileInputStream(file); ?
? ? ? ? ? ? ? ? int ch = fis.read(bytes, 0, BUFFER_SIZE); ?
? ? ? ? ? ? ? ? while(ch != -1){ ?
? ? ? ? ? ? ? ? ? ? out.write(bytes,0,ch); ?
? ? ? ? ? ? ? ? ? ? ch = fis.read(bytes,0,BUFFER_SIZE); ?
? ? ? ? ? ? ? ? } ?
? ? ? ? ? ? }else{ ?
? ? ? ? ? ? ? ? String errorMessage = "HTTP/1.1 404 File Not Found\n" + ??
? ? ? ? ? ? ? ? ? ? "Content-Type:text/html\n" + ?
? ? ? ? ? ? ? ? ? ? "Content-Length:23\n" + ?
? ? ? ? ? ? ? ? ? ? "\n" + ??
? ? ? ? ? ? ? ? ? ? "<h1>File not Found</h1>"; ?
? ? ? ? ? ? ? ? out.write(errorMessage.getBytes()); ?
? ? ? ? ? ? } ??
? ? ? ? ? ? System.out.println(e.toString()); ?
? ? ? ? }finally{ ?
? ? ? ? ? ? if(fis != null) ?
? ? ? ? ? ? ? ? fis.close(); ?
坐等大神
舉報(bào)
分享的是 Java 中的網(wǎng)絡(luò)編程,使用Socket實(shí)現(xiàn)網(wǎng)絡(luò)聊天通信
1 回答socket實(shí)現(xiàn)簡(jiǎn)單的web服務(wù)器
4 回答大家有簡(jiǎn)單的聊天室的代碼我參考一下嗎
2 回答為什么要用線程來(lái)實(shí)現(xiàn)?
1 回答有老師用的java API文檔下載地址嗎
4 回答老師,我想請(qǐng)教一下為什么我用UDP寫(xiě)出來(lái)的多線程會(huì)有BUG。內(nèi)容為server端、serverthread端、client端
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2017-10-30
package com.tomcat; ?
import java.io.File; ?
import java.io.IOException; ?
import java.io.InputStream; ?
import java.io.OutputStream; ?
import java.net.InetAddress; ?
import java.net.ServerSocket; ?
import java.net.Socket; ?
?
public class HttpServer { ?
? ? public static final String ?WEB_ROOT=System.getProperty("user.dir") + File.separatorChar + "webRoot"; ?
? ? private static final String SHUTDOWN_COMMAND = "/SHUTDOWN"; ?
? ? private boolean shutdown = false; ?
? ? public static void main(String []args){ ?
? ? ? ? HttpServer server = new HttpServer(); ?
? ? ? ? server.await(); ?
? ? } ?
? ? public void await(){ ?
? ? ? ? ServerSocket serverSocket = null; ?
? ? ? ? int port = 8080; ?
? ? ? ? try{ ?
? ? ? ? ? ? serverSocket = new ServerSocket(port,1,InetAddress.getByName("127.0.0.1")); ?
? ? ? ? }catch(Exception e){ ?
? ? ? ? ? ? e.printStackTrace(); ?
? ? ? ? ? ? System.exit(1); ?
? ? ? ? } ?
? ? ? ? while(!shutdown){ ?
? ? ? ? ? ? Socket socket = null; ?
? ? ? ? ? ? InputStream in = null; ?
? ? ? ? ? ? OutputStream out = null; ?
? ? ? ? ? ? try { ?
? ? ? ? ? ? ? ? socket = serverSocket.accept(); ?
? ? ? ? ? ? ? ? in = socket.getInputStream(); ?
? ? ? ? ? ? ? ? out = socket.getOutputStream(); ?
? ? ? ? ? ? ? ? Request request = new Request(in); ?
? ? ? ? ? ? ? ? request.parse(); ?
? ? ? ? ? ? ? ? Response response = new Response(out); ?
? ? ? ? ? ? ? ? response.setRequest(request); ?
? ? ? ? ? ? ? ? response.sendStaticResource(); ?
? ? ? ? ? ? ? ? socket.close(); ?
? ? ? ? ? ? ? ? shutdown = request.getUri().equals("SHUTDOWN_COMMAND"); ?
? ? ? ? ? ? } catch (IOException e) { ?
? ? ? ? ? ? ? ? e.printStackTrace(); ?
? ? ? ? ? ? ? ? continue; ?
? ? ? ? ? ? } ?
? ? ? ? } ?
? ? } ?
} ?
----------------------------------------------------------------------------------------------------
package com.tomcat; ?
??
import java.io.IOException; ?
import java.io.InputStream; ?
??
public class Request { ?
? ? private InputStream input; ?
? ? private String uri; ?
? ? public Request(InputStream input){ ?
? ? ? ? this.input = input; ?
? ? } ?
? ? public void parse(){ ?
? ? ? ? StringBuffer request = new StringBuffer(2048); ?
? ? ? ? int i; ?
? ? ? ? byte [] buffer = new byte[2048]; ?
? ? ? ? try{ ?
? ? ? ? ? ? i = input.read(buffer); ?
? ? ? ? }catch(IOException e){ ?
? ? ? ? ? ? e.printStackTrace(); ?
? ? ? ? ? ? i = -1; ?
? ? ? ? } ?
? ? ? ? for(int j=0;j<i;j++){ ?
? ? ? ? ? ? request.append((char)buffer[j]); ?
? ? ? ? } ?
? ? ? ? System.out.println(request.toString()); ?
? ? ? ? uri = parseUri(request.toString()); ?
? ? } ?
? ??
? ? private String parseUri(String requestString){ ?
? ? ? ? int index1,index2; ?
? ? ? ? index1 = requestString.indexOf(' '); ?
? ? ? ? if(index1 != -1){ ?
? ? ? ? ? ? index2 = requestString.indexOf(' ', index1+1); ?
? ? ? ? ? ? if(index2 > index1){ ?
? ? ? ? ? ? ? ? return requestString.substring(index1+1,index2); ?
? ? ? ? ? ? } ?
? ? ? ? } ?
? ? ? ? return null; ?
? ? } ?
? ? public String getUri(){ ?
? ? ? ? return uri; ?
? ? } ?
} ?
----------------------------------------------------------------------------
package com.tomcat; ?
??
import java.io.File; ?
import java.io.FileInputStream; ?
import java.io.IOException; ?
import java.io.OutputStream; ?
??
public class Response { ?
? ? private static final int BUFFER_SIZE=1024; ?
? ? Request request; ?
? ? OutputStream out; ?
? ? public Response(OutputStream out){ ?
? ? ? ? this.out = out; ?
? ? } ?
? ? public void setRequest(Request request){ ?
? ? ? ? this.request = request; ?
? ? } ?
? ? public void sendStaticResource() throws IOException{ ?
? ? ? ? byte []bytes = new byte[BUFFER_SIZE]; ?
? ? ? ? FileInputStream fis = null; ?
? ? ? ? try{ ?
? ? ? ? ? ? File file = new File(HttpServer.WEB_ROOT,request.getUri()); ?
? ? ? ? ? ? if(file.exists()){ ?
? ? ? ? ? ? ? ? fis = new FileInputStream(file); ?
? ? ? ? ? ? ? ? int ch = fis.read(bytes, 0, BUFFER_SIZE); ?
? ? ? ? ? ? ? ? while(ch != -1){ ?
? ? ? ? ? ? ? ? ? ? out.write(bytes,0,ch); ?
? ? ? ? ? ? ? ? ? ? ch = fis.read(bytes,0,BUFFER_SIZE); ?
? ? ? ? ? ? ? ? } ?
? ? ? ? ? ? }else{ ?
? ? ? ? ? ? ? ? String errorMessage = "HTTP/1.1 404 File Not Found\n" + ??
? ? ? ? ? ? ? ? ? ? "Content-Type:text/html\n" + ?
? ? ? ? ? ? ? ? ? ? "Content-Length:23\n" + ?
? ? ? ? ? ? ? ? ? ? "\n" + ??
? ? ? ? ? ? ? ? ? ? "<h1>File not Found</h1>"; ?
? ? ? ? ? ? ? ? out.write(errorMessage.getBytes()); ?
? ? ? ? ? ? } ??
? ? ? ? }catch(Exception e){ ?
? ? ? ? ? ? System.out.println(e.toString()); ?
? ? ? ? }finally{ ?
? ? ? ? ? ? if(fis != null) ?
? ? ? ? ? ? ? ? fis.close(); ?
? ? ? ? } ?
? ? } ?
} ?
2017-10-28
坐等大神