用java中的server,Java中?

本文目录一览:

Java中service和server有什么区别?

一般来说, 我们会对一个完整的Java服务做一些架构切分, Server主要指的是服务本身, 一般可能是Springboot架构的启动类, 而controller, service, dao等是作为代码的结构拆分, 一般来说service是用来描述处理核心业务逻辑的相关代码类, controller是用来作为对外暴露的接口类.

java中用serverSocket类如何向指定IP的客户端发送数据

在客户/服务器通信模式中, 服务器端需要创建监听端口的 ServerSocket, ServerSocket 负责接收客户连接请求。ServerSocket并不能直接向客户端发送数据。

通常做法是,ServerSocket接收到一个连接请求,用accept建立连接:

socket = serverSocket.accept(); //接收客户连接

然后启动一个新的线程来处理和客户端的收发数据的工作

Thread workThread = new Thread(new Handler(socket)); //创建一个工作进程

workThread.start(); //启动工作进程

使用accept后的Socket去收发数据。

Java 和其它语言之间怎么进行Socket通信?用JAVA编写server,C语言编写Client,可以实现吗?怎么实现?

本答案提交时间:2011-6-12 17:17

Java 和其它语言之间进行Socket通信使用Socket和ServerSocket类。

用JAVA编写server,C语言编写Client,当然可以实现通信(示例在最后)。

1、Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket 是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

重要的Socket API:

java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,使用频繁的三个方法:

. Accept方法用于产生”阻塞”,直到接受到一个连接,并且返回一个客户端的Socket对象实例。”阻塞”是一个术语,它使程序运行暂时”停留”在这个地方,直到一个会话产生,然后程序继续;通常”阻塞”是由循环产生的。

. getInputStream方法获得网络连接输入,同时返回一个IutputStream对象实例,。

. getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。

注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。

2.如何开发一个Server-Client模型的程序

开发原理:

服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。

客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。

下面这个程序用JAVA建立了一个服务器,它一直监听10000端口,等待用户连接,而用户端则可以使用C写的程序来连接该服务器。

本程序在建立连接后给客户端返回一段信息,然后结束会话。这个程序一次只能接受一个客户连接。

import java.net.*;

import java.io.*;

public class Server

{

private ServerSocket ss;

private Socket socket;

private BufferedReader in;

private PrintWriter out;

public Server()

{

try

{

ss = new ServerSocket(10000);

while (true)

{

socket = ss.accept();

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

out = new PrintWriter(socket.getOutputStream(),true);

String line = in.readLine();

out.println(“you input is :” + line);

out.close();

in.close();

socket.close();

}

ss.close();

}

catch (IOException e)

{}

}

public static void main(String[] args)

{

new Server();

}

}

java中serverSocket是干什么的 怎么用

serversocket 建立的是socket的服务端,

socket建立的是客户端。

例子

socket和serversocket (2010-05-07 04:17:11)转载▼

public class Server {

public static void main(String[] args) {

Socket socket=null;

BufferedReader br=null;

PrintWriter pw=null;

try {

//创建服务器,并开放3081端口

ServerSocket server=new ServerSocket(3081);

while(true){

//监听服务器端口,一旦有数据发送过来,那么就将数据封装成socket对象

//如果没有数据发送过来,那么这时处于线程阻塞状态,不会向下继续执行

socket=server.accept();

System.out.println(“客户端信息:”+socket.getRemoteSocketAddress());

//从socket中得到读取流,该流中有客户端发送过来的数据

InputStream in=socket.getInputStream();

//InputStreamReader将字节流转化为字符流

br=new BufferedReader(new InputStreamReader(in));

//行读取客户端数据

String info=br.readLine();

System.out.println(info);

OutputStream out=socket.getOutputStream();

pw=new PrintWriter(out);

pw.println(“服务器说:我扁死你”);

pw.flush();

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

pw.close();

br.close();

socket.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

public class Client {

public static void main(String[] args) {

Socket socket=null;

PrintWriter pw=null;

BufferedReader br=null;

try {

//创建socket对象,并指明服务器的IP地址和端口号

socket=new Socket(“localhost”,3081);

//得到socket发送数据的输出流

OutputStream out=socket.getOutputStream();

//将字节流包装成字符流

pw=new PrintWriter(out);

//向服务器发送数据

pw.println(“客户端说:建军闷烧”);

//刷新流,确保数据能写到服务器

pw.flush();

InputStream in=socket.getInputStream();

br=new BufferedReader(new InputStreamReader(in));

String info=br.readLine();

System.out.println(info);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

finally{

try {

pw.close();

socket.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

public class Client {

public static void main(String[] args) {

Socket socket=null;

PrintWriter pw=null;

BufferedReader br=null;

try {

//创建socket对象,并指明服务器的IP地址和端口号

socket=new Socket(“localhost”,3081);

//得到socket发送数据的输出流

OutputStream out=socket.getOutputStream();

//将字节流包装成字符流

pw=new PrintWriter(out);

//向服务器发送数据

pw.println(“客户端说:建军闷烧”);

//刷新流,确保数据能写到服务器

pw.flush();

InputStream in=socket.getInputStream();

br=new BufferedReader(new InputStreamReader(in));

String info=br.readLine();

System.out.println(info);

} catch (Exception e) {

// TODO

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/291229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-24 13:14
下一篇 2024-12-24 13:14

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论