怎么用java代码连接到服务器?

怎么用java代码连接到服务器?,第1张

用Socket类去连接\x0d\x0aStringip="192.168.0.57"\x0d\x0aintport=7000\x0d\x0aInputStreamin\x0d\x0aOutputStreamout\x0d\x0aSocketsock=null\x0d\x0atry{\x0d\x0asock=newSocket(ip,port)\x0d\x0asock.setSoTimeout(60*1000)//设置超时\x0d\x0athis.in=sock.getInputStream()\x0d\x0athis.out=sock.getOutputStream()\x0d\x0a}catch(Exceptione){\x0d\x0athrownewException("与终端连接失败!")\x0d\x0a}

服务器端可以采用多线程处理客户请求,例如:

package threadPool

import java.io.BufferedReader

import java.io.IOException

import java.io.InputStream

import java.io.InputStreamReader

import java.io.OutputStream

import java.io.PrintWriter

import java.net.ServerSocket

import java.net.Socket

import java.util.concurrent.ExecutorService

import java.util.concurrent.Executors

public class ThreadPoolServer {

private int port = 8000

private ServerSocket serverSocket

private ExecutorService executorService //线程池

private final int POOL_SIZE = 4 //单个CPU时线程池中的工作线程数目

public ThreadPoolServer() throws IOException{

serverSocket = new ServerSocket(port)

//创建线程池

//Runtime 的availableProcessors()方法返回当前系统CPU的数目

//系统CPU越多,线程池中的工作线程数目越多

executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*POOL_SIZE)

System.out.println("服务器已启动!!")

}

public void service(){

while(true){

Socket socket = null

try{

socket = serverSocket.accept()

executorService.execute(new Handler(socket))

}catch(IOException e){

e.printStackTrace()

}

}

}

public static void main(String[] args) {

try {

new ThreadPoolServer().service()

} catch (IOException e) {

e.printStackTrace()

}

}

}

class Handler implements Runnable {

private Socket socket

public Handler(Socket socket) {

this.socket = socket

}

private PrintWriter getWriter(Socket socket) throws IOException {

OutputStream socketOut = socket.getOutputStream()

return new PrintWriter(socketOut, true)

}

private BufferedReader getReader(Socket socket) throws IOException {

InputStream socketIn = socket.getInputStream()

return new BufferedReader(new InputStreamReader(socketIn))

}

public String echo(String msg) {

return "echo:" + msg

}

@Override

public void run() {

try {

System.out.println("New connection accepted:" + socket.getInetAddress() + ":" + socket.getPort())

BufferedReader br = getReader(socket)

PrintWriter pw = getWriter(socket)

String msg = null

while ((msg = br.readLine()) != null) {

System.out.println(msg)

pw.println(echo(msg))

if (msg.equals("bye")) {

break

}

}

} catch (IOException e) {

e.printStackTrace()

} finally {

try {

if (socket != null)

socket.close()

} catch (IOException e) {

e.printStackTrace()

}

}

}

}

如何用Java实现Web服务器 一、HTTP协议的作用原理

WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理包括四个步骤:

(1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。

(2) 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:

GET 路径/文件名 HTTP/1.0

文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。

(3) 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/180550.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-28
下一篇2023-03-28

发表评论

登录后才能评论

评论列表(0条)

    保存