1、http底層是通過socket實現的嗎
1。socket是網路數據傳輸層主要技術手段,要傳遞網路信息的大都是靠socket實現的。2.jsp在是這么傳輸數據的專:先轉屬換成servlet,再編譯為.class位元組碼servlet底層是socket,jsp所轉化的servlet是HttpServlet,它是對http協議的封裝。你可以去web伺服器比如tomcat下的work文件夾看看,裡面都是jsp轉換的servelt以及他們的位元組碼.class文件。總的來說呢,底層到高層這么來的:socket->HttpServlet->JSP所以你非要說jsp底層是有socket實現的也沒錯。
2、JAVA 使用Socket 訪問HTTP伺服器
你先看看http協議吧。
你連上去 你沒有發請求,伺服器怎麼知道你要干什麼?
可以像下面一樣。
String host = InetAddress.getByName("www.javathinker.org").getHostAddress();3、如何讓SOCKET服務和HTTP服務跟著伺服器一起啟動,求解
你可以把你來的Socket服務寫在源一個Servele的Init方法裡面,然後在web.xml中配置
<servlet>就可以一起啟動了。
4、C++ 如何使用 Socket 類向 HTTP 伺服器發送數據和接收響應
客戶端發送請求給伺服器,伺服器處理完畢以後把Socket tempSocket = (你還可以檢測收到的1W8數據是3W8裡面的哪一部分. 這個把發送的數據和接收的
5、增樣基於http協議使用Socket寫一個web伺服器和一個web瀏覽器
最簡單的http請求是
GET / HTTP/1.0
其中GET是關鍵字
/表示請求的是跟目錄主頁
HTTP/1.0表示使用HTTP協議的1.0版本通訊
作為伺服器端,這是會向伺服器返回首頁的全部html代碼
至此,一個最簡單的http通訊就完成了。但是,此時網頁還不能正常顯示,因為伺服器僅僅返回了html代碼,客戶端還必須根據html代碼中涉及的其他文件(例如css、js、圖象、flash等等)的地址獲得相應文件,才能使網頁正常顯示
下面是http server和client的最簡單實現(java)
import java.net.*;
import java.io.*;
import java.util.*;
public class Client
{
public static void main(String[] args)
{
String arg0;
if(args.length!=1)
{
System.out.println("Server name not founud!");
return;
}
else
{
arg0=args[0];
if(arg0.toLowerCase().indexOf("http://")!=0)
arg0="http://"+arg0;
}
try
{
java.net.URL theURL=new java.net.URL(arg0);
java.net.URLConnection conn=theURL.openConnection();
if(conn instanceof java.net.HttpURLConnection)
{
java.net.HttpURLConnection hConn=(HttpURLConnection)conn;
hConn.setFollowRedirects(false);
hConn.connect();
int code=hConn.getResponseCode();
String msg=hConn.getResponseMessage();
if(code==HttpURLConnection.HTTP_OK)
{
System.out.println("Normal response returned:" + code + " " +msg);
java.util.Map headerMap = hConn.getHeaderFields();
java.util.Iterator iterEnt = headerMap.entrySet().iterator();
while(iterEnt.hasNext())
{
System.out.println(iterEnt.next());
}
System.out.println("Hit enter to continue");
System.in.read();
java.io.InputStream in=hConn.getInputStream();
java.io.BufferedInputStream bufIn = new BufferedInputStream(in);
for(;;)
{
int data = bufIn.read();
if(data == -1)
break;
else
System.out.print( (char)data);
}}
else
{
System.out.println("Abormal response returned:" + code + " " +msg);
}}
else
{
System.err.println("Invalid transport protocol: not HTTP!");
return;
}}
catch(java.net.MalformedURLException ex)
{
System.err.println("Unable to parse URL!");
return;
}
catch(java.io.IOException ex)
{
System.err.println("I/O Error: "+ex);
return;
}}}
import java.io.*;
import java.net.*;
import java.util.*;
public class Server
{
protected String docroot;
protected int port;
protected ServerSocket ss;
class Handler extends Thread
{
protected Socket socket;
protected PrintWriter pw;
protected BufferedOutputStream bos;
protected BufferedReader br;
protected File docroot;
public Handler(Socket _socket, String _docroot)throws Exception
{
socket=_socket;
docroot= new File(_docroot).getCanonicalFile() ;
}
public void run()
{
try{
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
bos=new BufferedOutputStream(socket.getOutputStream());
pw=new PrintWriter(new OutputStreamWriter(bos));
String line= br.readLine();
socket.shutdownInput();
if(line==null)
{
socket.close();
return;
}
if(line.toUpperCase().startsWith("GET"))
{
StringTokenizer tokens=new StringTokenizer(line," ?");
tokens.nextToken();
String req = tokens.nextToken() ;
String name;
if(req.startsWith("/") || req.startsWith("\\"))
name=this.docroot + req;
else
name=this.docroot+File.separator+req;
File file=new File(name).getCanonicalFile();
if(!file.getAbsolutePath().startsWith(this.docroot.getAbsolutePath()))
{
pw.println("HTTP/1.0 403 Forbidden");
pw.println();
}
else if(!file.exists())
{
pw.println("HTTP/1.0 404 File Not Found");
pw.println();
}
else if(!file.canRead())
{
pw.println("HTTP/1.0 403 Forbidden");
pw.println();
}
else if(file.isDirectory())
{
sendDir(bos,pw,file,req);
}
else
{
sendFile(bos,pw,file.getAbsolutePath());
}
else
{
pw.println("HTTP/1.0 501 Not Implemented");
pw.println();
}
pw.flush();
bos.flush();
}
catch(Exception ex)
{
ex.printStackTrace();
}
try
{
socket.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
protected void sendFile(BufferedOutputStream bos, PrintWriter pw, String filename) throws Exception
{
try
{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filename));
byte[] data = new byte[10*1024];
int read= bis.read(data);
pw.println("HTTP/1.0 200 Okay");
pw.println();
pw.flush();
bos.flush();
while(read != -1)
{
bos.write(data, 0, read);
read = bis.read(data);
}
bos.flush();
}
catch(Exception ex)
{
pw.flush();
bos.flush();
}
}
protected void sendDir(BufferedOutputStream bos, PrintWriter pw, File dir, String req)throws Exception
{
try
{
pw.println("HTTP/1.0 200 Okay");
pw.println();
pw.flush();
pw.print("<html><head><titleDirectory of ");
pw.print(req);
pw.print("</title></head><body><h1>Directory of ");
pw.print(req);
pw.println("</h1><table border=0>");
File[] contents = dir.listFiles();
for(int i=0; i<contents.length; i++)
{
pw.print("<tr>");
pw.print("<td><a href=\"");
pw.print(req);
pw.print(contents[i].getName());
if(contents[i].isDirectory())
pw.print("/");
pw.print("\">");
if(contents[i].isDirectory())
pw.print("Dir -> ");
pw.print(contents[i].getName());
pw.print("</a></td>");
pw.println("</tr>");
}
pw.println("</table></body></html>");
pw.flush();
}
catch(Exception ex)
{
pw.flush();
bos.flush();
}}}
protected void parseParams(String[] args)
{
switch(args.length)
{
case 1:
case 0:
System.err.println("Syntax: <jvm> "+ this.getClass().getName()+" docroot port");
System.exit(0);
default:
this.docroot= args[0];
this.port = Integer.parseInt(args[1]);
break;
}}
public Server(String[] args)throws Exception
{
System.out.println("Checking for paramaters");
parseParams(args);
System.out.print("Starting web server......");
this.ss = new ServerSocket(this.port);
System.out.println("OK");
for(;;)
{
Socket accept = ss.accept();
new Handler(accept, docroot).start();
}}
public static void main(String[] args)throws Exception
{
Server ser= new Server(args);
}}
6、如何利用socket進行HTTP訪問
你要用socket,寫入流的數據就要符合HTTP協議規范,直接用HTTP連接撒。
java.net.HttpURLConnection
7、用JSP寫一個Socket連接的HTTP伺服器
socket正常寫啊,你在servlet裡面直接調用就可以了啊~~~~
8、python 怎麼實現http伺服器
簡而言之,它是在物理伺服器上搭建的一個網路連接伺服器(networking server),永久地等待客戶端發送請求。當伺服器收到請求之後,它會生成響應並將 其返回至客戶端。客戶端與伺服器之間的通信,是以HTTP協議進行的。客戶端可以是瀏覽器,也可以是任何支持HTTP協議的軟體。
那麼,網路伺服器的簡單實現形式會是怎樣的呢?下面是我對此的理解。示例代碼使用Python語言實現,不過即使你不懂Python語言,你應該也可以從代碼和下面的 解釋中理解相關的概念:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import socket
HOST, PORT = '', 8888
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind((HOST, PORT))
listen_socket.listen(1)
print 'Serving HTTP on port %s ...' % POR
9、設計一個linux c語言,Http協議的伺服器,用socket收發消息,簡單點,如何實現。求高手解答
去看一下《Advanced Linux Programming》這本書吧,第11章講的就是怎麼用C語言實現一Http伺服器。
這里有下載地址(英文的):
http://www.advancedlinuxprogramming.com/alp-folder
英文看起來不順的話可以上網找找有沒有中文版的這本書,應該叫Linux高級編程吧~~~