Java网络编程从入门到精通(26):在服务端采取和发送数据[Java编程]
本文“Java网络编程从入门到精通(26):在服务端采取和发送数据[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在成立完ServerSocket对象后,通过accept办法返回的Socket对象,服务端便可以和客户端举行数据交互.
Socket类和ServerSocket类都有两个得到输入输出流的办法:getInputStream和getOutputStream.关于Socket类而言,利用getInputStream办法得到的InputStream是从服务端获得数据,而getOutputStream办法得到的OutputStream是向服务端发送数据.而ServerSocket的getInputStream和getOutputStream办法也近似.InputStream从客户端读取数据,OutputStream向客户端发送数据.下面的代码是一个接纳HTTP恳求,并返回HTTP恳求头信息的程序,它演示了ServerSocket类若何读取和发送来自客户端的数据.
package server;
import java.net.*;
import java.io.*;
public class HttpEchoServer extends Thread
{
private Socket socket;
public void run()
{
try
{
InputStreamReader isr = new InputStreamReader(socket
.getInputStream());
BufferedReader br = new BufferedReader(isr);
OutputStreamWriter osw = new OutputStreamWriter(socket
.getOutputStream());
osw.write("HTTP/1.1 200 OK\r\n\r\n");
String s = "";
while (!(s = br.readLine()).equals(""))
osw.write("<html><body>" + s + "<br></body></html>");
osw.flush();
socket.close();
}
catch (Exception e)
{
}
}
public HttpEchoServer(Socket socket)
{
this.socket = socket;
}
public static void main(String[] args) throws Exception
{
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已经启动,端口:8888");
while (true)
{
Socket socket = serverSocket.accept();
new HttpEchoServer(socket).start();
}
}
}
编译并运行HttpEchoServer后,在IE的地址栏中输入URL:http://localhost:8888.输出后果如图1所示.
图1
上面的代码并未考证HTTP恳求范例,因此,GET、POST、HEAD等HTTP恳求都可以得到回应.在接纳客户端恳求后,只向客户端输出了一行HTTP呼应头信息(包含呼应码和HTTP版本号),关于HTTP呼应头来说,这一行是必须有的,其他的头字段都是可选的.上面的代码每读一行恳求头信息,就向客户端写一行呼应信息.最后利用了flush办法将输出缓冲区中的内容发送的客户端.这是必须的,只要利用OutputStream,在最后就必必要调用flush办法(在Socket类中利用OutputStream也是一样).
以上是“Java网络编程从入门到精通(26):在服务端采取和发送数据[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |