「java请求服务」java 调用服务

博主:adminadmin 2022-11-23 22:08:06 47

本篇文章给大家谈谈java请求服务,以及java 调用服务对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎么用java写一个针对各种不同请求的TCP服务端

服务器监听端口 做个无限循环 接到一个连接就创建一个通道线程,并将通道线程存储到一个list集合中

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

/*

* 4.用socket通讯写出多个客户端和一个服务器端的通讯,

* 要求客户发送数据后能够回显相同的数据(回显功能)(实用TCP方式)。

*/

public class Test4Server {

// 主入口

public static void main(String[] args) throws IOException {

scoketServer();

}

// 开启的tcp8888监听端口

public static void scoketServer() throws IOException {

ServerSocket server = new ServerSocket(8888);

while (true) {

// 未连通前线程阻塞,连通后开启一个socket通道线程后继续监听8888端口

Socket socket = server.accept();

System.out.println(socket.getInetAddress().getHostAddress()

+ "连接进入");

new SocketThread(socket).start();

}

}

}

// 一个服务器端口中监听多个客服端通道线程

class SocketThread extends Thread {

// 所有通道写入流的集合

private static ListPrintWriter list =new ArrayListPrintWriter();

private BufferedReader bufferedReader;

private PrintWriter printWriter;

public SocketThread(Socket socket) throws IOException {

this.bufferedReader = new BufferedReader(new InputStreamReader(socket

.getInputStream()));

this.printWriter = new PrintWriter(socket.getOutputStream());

list.add(printWriter);

}

@Override

public void run() {

String string = null;

while (true) {

try {

// 服务器在通道中读到的信息回显给客服端

string = bufferedReader.readLine();

System.out.println("客服端信息:" + string);

for(PrintWriter printWriter:list ){

printWriter.write("服务器回显:" + string + "\r\n");

printWriter.flush();

}

} catch (IOException e) {

}

}

}

}

客服端代码 可以用在局域网中用多台来连接测试

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

import java.util.Scanner;

public class Test4Client {

public static Object obj = new Object();

// 客服端的主入口

public static void main(String[] args) throws IOException {

socketClient();

}

// 与服务器连通地址本机(127.0.0.1),局域网中其他机器是(服务器在局域网中的ip地址) 端口都是8888

public static void socketClient() throws IOException {

Socket socket = new Socket("127.0.0.1", 8888);

if (socket.isConnected()) {

// 如果连接成功了就开启写和读的进程

new writer(socket).start();

new read(socket).start();

} else {

System.out.println("服务器未开启");

}

}

}

// 写入到通道的线程

class writer extends Thread {

@SuppressWarnings("unused")

private Socket socket;

private PrintWriter printWriter;

private Scanner scanner = new Scanner(System.in);

private String str = null;

public writer(Socket socket) throws IOException {

this.socket = socket;

this.printWriter = new PrintWriter(socket.getOutputStream());

}

@Override

public void run() {

scanner.useDelimiter("\r\n");

while (true) {

System.out.print("请输入信息:");

// 产生扫描器的线程阻塞

str = scanner.next();

System.out.println("我说:"+str);

printWriter.write(str + "\r\n");

printWriter.flush();

try {

Thread.sleep(200);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

// 从通道中读取的线程

class read extends Thread {

private Socket socket;

private BufferedReader bufferedReader;

private String str = null;

public read(Socket socket) throws IOException {

this.socket = socket;

this.bufferedReader = new BufferedReader(new InputStreamReader(socket

.getInputStream()));

}

@Override

public void run() {

while (true) {

try {

str = bufferedReader.readLine();

System.out.println(str);

} catch (IOException e) {

}

try {

Thread.sleep(200);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

怎样java向服务器发送http请求

你好,java有一个组件,httpclient,这个jar包,可以模拟http客户端,向服务端发送http请求,而且现在大部分都用的是这个。

java服务器接收客户端请求怎样实现的

服务器端代码:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintStream;

import java.net.ServerSocket;

import java.net.Socket;

/**

* Socket通讯服务器端

* @author 米强

*

*/

public class ServerMain {

public ServerMain() {

try {

// 构造服务器ServerSocket对象,参数为服务器端开放的端口号

ServerSocket ss = new ServerSocket(30102);

System.out.println("服务器准备就绪!");

// 死循环可以使服务器持续处于接收客户端状态

while(true){

// 该方法使程序阻塞,等待客户端的链接,当监听到客户端的链接,创建一个Socket对象与客户端单独会话

Socket s = ss.accept();

// 为了不影响服务器监听其它客户端,这里开启了一个线程,由线程处理与这个客户端的会话

new ServerThread(s).start();

}

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

new ServerMain();

}

}

/**

* 服务器端与客户端会话的线程

*/

class ServerThread extends Thread {

private Socket s = null;

private BufferedReader read = null;

private PrintStream print = null;

public ServerThread(Socket s) {

this.s = s;

try {

// 从Socket中获取输入流和输出流,由于我们只做一个简单的字符串通讯,所以采用BufferedRead和PrintStream来封装输入、输出流

read = new BufferedReader(new InputStreamReader(s.getInputStream()));

print = new PrintStream(s.getOutputStream());

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 线程的运行run方法

*/

public void run() {

try {

String message = null;

// 这里循环可以使服务器持续的接收客户端信息。read.readLine()通过输入流读取一段字符串,赋值给message变量,如果message字符串不为“exit”则循环,否则结束循环

while (!(message = read.readLine()).equals("exit")){

// 将字符串前面添加“返回:”,再发回客户端

print.println("返回:" + message);

}

} catch (IOException e) {

} finally {

// 在 finally 代码块中无论如何都会执行下面代码:

try {

// 如果没有关闭Socket

if(!s.isClosed()){

// 关闭Socket链接

s.close();

}

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

}

客户端代码:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintStream;

import java.net.Socket;

import java.net.UnknownHostException;

import java.util.Scanner;

/**

* Socket通讯客户端

* @author 米强

*

*/

public class ClientMain {

public ClientMain() {

try {

// 构造与服务器通讯的Socket对象,参数为服务器IP地址(String)和端口号(int),端口号需要和服务器端开放的端口号对应

Socket s = new Socket("192.168.1.100", 30102);

// 启动一个线程与服务器通讯,并把链接服务器的Socket对象传递过去

new LinkThread(s).start();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

new ClientMain();

}

}

/**

* 与服务器通讯的线程

*/

class LinkThread extends Thread {

private Socket s = null;

// 输出流

private PrintStream out = null;

// 缓冲输入流

private BufferedReader in = null;

// 录入文字的Scanner对象

private Scanner scanner = null;

public LinkThread(Socket s) {

// 将Socket对象实例保存在全局变量中,因为run方法中我们还要用它断开链接

this.s = s;

try {

// 从Socket中获取输入流和输出流,由于我们只做一个简单的字符串通讯,所以采用BufferedRead和PrintStream来封装输入、输出流

out = new PrintStream(s.getOutputStream());

in = new BufferedReader(new InputStreamReader(s.getInputStream()));

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 线程的运行run方法

*/

public void run() {

// 构造Scanner对象

scanner = new Scanner(System.in);

System.out.println("提示:如果要结束本次会话,请输入“exit”指令!");

try {

// 死循环可以使客户端不断的向服务器发送信息,不用担心循环无法结束,后面的return语句可以结束整个线程。

while(true){

// 提示用户输入文字

System.out.print("请输入:");

// 将用户输入的字符串保存在message变量中

String message = scanner.nextLine();

// 通过输出流发送字符串

out.println(message);

// 清空缓冲,强制输出

out.flush();

// 获取服务器返回的字符串

String str = in.readLine();

// 如果返回的字符串存在

if(str != null){

// 显示在控制台

System.out.println(str);

}else{

// 提示会话结束,并结束线程

System.out.println("本次会话结束!");

return;

}

}

} catch (IOException e) {

e.printStackTrace();

} finally {

// 在 finally 代码块中无论如何都会执行下面代码:

try {

// 如果没有关闭Socket

if(!s.isClosed()){

// 关闭Socket链接

s.close();

}

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

}

求教java程序怎么向网页服务器发送请求

POST方式发送请求示例: String fullurl = url; //打开连接 URLConnection conn =new URL(fullurl).openConnection(); //设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"); //发送POST请求必须设置下面两行 conn.setDoInput(true); conn.setDoOutput(true); try ( //获取URLConnection对象对应的输出流 PrintWriter out = new PrintWriter(conn.getOutputStream());) { out.print(parm);//发送请求参数(key1=value1key2=value2) out.flush();//flush输出流的缓冲 } catch (Exception e) {} //获取响应头字段 MapString, ListString map = conn.getHeaderFields(); //根据输入流读取响应数据 InputStream is = conn.getInputStream();

java请求服务的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 调用服务、java请求服务的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。