话不多说,直接上代码
package testSockate;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ConnectException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
import java.net.SocketTimeoutException;
public class SocketHttp {
public static void main(String[] args) {
Thread threadReceive =
new Thread(
new TestReceiveHttp());
threadReceive.start();
}
}
class TestSendHttp implements Runnable {
@Override
public void run() {
try {
String path =
"/";
String host =
"www.oschina.net";
int port =
80;
Socket socket =
new Socket();
InetSocketAddress address =
new InetSocketAddress(host, port);
socket.connect(address,
3000);
OutputStreamWriter osw =
new OutputStreamWriter(socket.getOutputStream(),
"utf-8");
osw.write(
"GET " + path +
" HTTP/1.1\r\n");
osw.write(
"Host: " + host +
" \r\n");
osw.write(
"\r\n");
osw.flush();
socket.shutdownOutput();
BufferedReader bufferedReader =
new BufferedReader(
new InputStreamReader(socket.getInputStream(),
"utf-8"));
String line =
null;
while ((line = bufferedReader.readLine()) !=
null) {
System.out.println(line);
}
osw.close();
bufferedReader.close();
socket.close();
}
catch (ConnectException e) {
System.out.println(
"连接失败");
}
catch (SocketTimeoutException e) {
System.out.println(
"连接超时");
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
class TestReceiveHttp implements Runnable {
@Override
public void run() {
ServerSocket
server;
Socket socket;
try {
server =
new ServerSocket(
8079);
System.out.println(
"正在等待8079端口的请求");
while (
true) {
socket =
server.accept();
if (socket !=
null) {
new Thread(
new TestReveiveThread(socket)).start();
}
}
}
catch (Exception e) {
System.out.println(
"异常");
}
}
}
class TestReveiveThread implements Runnable {
Socket socket;
public TestReveiveThread(Socket s) {
socket = s;
}
public void run() {
try {
BufferedReader bufferedReader =
new BufferedReader(
new InputStreamReader(socket.getInputStream(),
"utf-8"));
OutputStreamWriter osw =
new OutputStreamWriter(socket.getOutputStream(),
"utf-8");
String line =
null;
while ((line = bufferedReader.readLine()) !=
null) {
System.out.println(line);
if (line.equals(
"")) {
break;
}
}
osw.write(
"HTTP/1.1 200 OK\r\n");
osw.write(
"Server: Apache-Coyote/1.1\r\n");
osw.write(
"Set-Cookie: JSESSIONID=03493794995CE31A0F131787B6C6CBB2; Path=/; HttpOnly\r\n");
osw.write(
"Content-Type: text/html;charset=UTF-8\r\n");
osw.write(
"Transfer-Encoding: chunked\r\n");
osw.write(
"Date: Tue, 19 May 2015 02:48:27 GMT\r\n");
osw.write(
"\r\n");
osw.write(
"c9\r\n");
osw.write(
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");
osw.write(
"<HTML>\r\n");
osw.write(
" <HEAD><TITLE>A Servlet</TITLE></HEAD>\r\n");
osw.write(
" <BODY>\r\n");
osw.write(
" This is class com.serv.myServ, using the GET method\r\n");
osw.write(
" </BODY>\r\n");
osw.write(
"</HTML>\r\n");
osw.write(
"\r\n");
osw.write(
"0");
osw.write(
"\r\n");
osw.write(
"\r\n");
osw.flush();
bufferedReader.close();
osw.close();
socket.close();
}
catch (Exception e) {
System.out.println(
"客户端接受异常" + e.getMessage());
}
}
}
鼠小
认证博客专家
一个萌汉子
未来的路是黑的,我不知道怎么走,我需要做的就是先走着。https://smallzheng.blog.csdn.net/