您好,登錄后才能下訂單哦!
使用ServerSocket建立與瀏覽器的連接,獲取請求協議
public class Server {
private ServerSocket serverSocket;
public static void main(String[]args)
{
Server server=new Server();
server.start();
}
//啟動服務
public void start()
{
try {
serverSocket=new ServerSocket(8888);
receive();
} catch (IOException e) {
e.printStackTrace();
System.out.println("服務器啟動失敗");
}
}
//停止服務
public void stop()
{
}
//接受連接處理
public void receive()
{
try {
Socket client=serverSocket.accept();
System.out.println("一個客戶端建立了連接");
//獲取請求協議
InputStream is =client.getInputStream();
byte[] datas=new byte[1024*1024];
int len=is.read(datas); //讀取完畢,并返回長度
String requestInfo =new String(datas,0,len);
System.out.println(requestInfo);
} catch (IOException e) {
e.printStackTrace();
System.out.println("客戶端錯誤");
}
}
}
返回響應協議:
public class Server02 {
private ServerSocket serverSocket;
public static void main(String[]args)
{
Server02 server=new Server02();
server.start();
}
//啟動服務
public void start()
{
try {
serverSocket=new ServerSocket(8888);
receive();
} catch (IOException e) {
e.printStackTrace();
System.out.println("服務器啟動失敗");
}
}
//停止服務
public void stop()
{
}
//接受連接處理
public void receive()
{
try {
Socket client=serverSocket.accept();
System.out.println("一個客戶端建立了連接");
//獲取請求協議
InputStream is =client.getInputStream();
byte[] datas=new byte[1024*1024];
int len=is.read(datas); //讀取完畢,并返回長度
String requestInfo =new String(datas,0,len);
System.out.println(requestInfo);
StringBuilder content =new StringBuilder();
content.append("<html>");
content.append("<head>");
content.append("<title>");
content.append("服務器響應成功");
content.append("</title>");
content.append("</head>");
content.append("<body>");
content.append("終于回來了");
content.append("</body>");
content.append("</html>");
int size=content.toString().getBytes().length; //必須獲取字節長度
StringBuilder responseInfo =new StringBuilder();
String blank =" ";
String CRLF="\r\n";
//拼接響應行
responseInfo.append("HTTP/1.1").append(blank);
responseInfo.append(200).append(blank);
responseInfo.append("OK").append(CRLF);
//返回
//1、響應行:HTTP/1.1 200 OK
//2、響應頭(最后一行存在空行):
/*
Date:Mon,31Dec209904:25:57GMT
Server:shsxt Server/0.0.1;charset=GBK 服務器內容
Content-type:text/html 內容類型
Content-length:39725426 內容長度
*/
//拼接響應頭
responseInfo.append("Date:").append(new Date()).append(CRLF);
responseInfo.append("Server:").append("shsxt Server/0.0.1;charset=GBK").append(CRLF);
responseInfo.append("Content-type:text/html").append(CRLF);
responseInfo.append("Content-length:").append(size).append(CRLF);
responseInfo.append(CRLF); //響應頭最后一行存在空行
//3、 正文
responseInfo.append(content.toString());
//寫出到客戶端
BufferedWriter bw =new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
bw.write(responseInfo.toString());
bw.flush();
} catch (IOException e) {
e.printStackTrace();
System.out.println("客戶端錯誤");
}
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。