javasocket客户端接受

java Socket客户端实时接受信息回显页面

你可以用推技术,把数据发送到页面,也可以用WebSocket // 建立WebSocket连接 var strWSPath =”ws://”+wsPath; if (‘WebSocket’ in window){ objWebSocket = new WebSocket(strWSPath+”/mywebsocket.do”); }else if (‘MozWebSocket’ in window){ objWebSocket = new MozWebSocket(strWSPath+”/mywebsocket.do”); }else{ alert(“对不起!你的浏览器不支持WebSocket!”); } // 收到消息 objWebSocket.onmessage = function(evt) { // 解析数据 var objJsonData = JSON.parse(evt.data); var strMethodName = objJsonData.method; var objData = objJsonData.data; // 执行相应的业务逻辑 window[strMethodName](objData); };

java socket服务器接收客户端信息问题

先把你的业务代码注释掉,直接打印接收到的数据看看,有没有可能是客户端两次的数据合并了,还有可能是业务代码太慢,导致第三次把第二次的给覆盖了,第四次的被第五次的给覆盖了。

javasocket客户端接受

java服务器端用传输给客户端文件流(fileinputstream),客户端应该如何接收?(socket )

其实这个问题你应该先想一下socket到底是一个什么东西,在网络编程中socket到底用来做什么的。socket:在操作系统内核中它代表网络连接的一个端点(endpoint),在应用程序中它代表一个打开的文件。socket pair唯一确定的一条网络连接,socket pair就是客户端socket和服务端socket的一个组合。也就是客户端ip和port与服务端ip和port的组合。一条网络连接也就是一条通信的信道,tcp连接代表的信道是全双工的。以信道来讲,逻辑上就存在两个管道来代表输出与输入来发送和接收信息。

那么在应用程序上我们就可以拿到这2个管道来完成socket之间的通信。

以你的应用来看输出流fos就代表着图中的红色管道,那么在服务端就应该是这个样的。

Scoket connSock = serverSocket.accept();//connSock代表着服务端的Socket

InputStream is = connSock.getInputStream();//输入流is代表图中的红色管道

OutputStrea os = connSock.getOutputStream();//输出流os代表图中的绿色管道

在服务端有一个字节缓冲区来存放从is读取的字节数据

byte[] buffer = new byte[1024];

然后服务端读取数据来填充这个字节缓冲区

is.read(buffer);//比如这样

然后就根据你的需求来操作这个buffer了。

然后把处理过后的数据通过os发送给客户端。os就是图中的那个绿色管道

os.write(处理过后的数据);

java的serversocket怎么接受来自客户端的数据

通过accept()获取Socket,然后获取IO流,这个是我写的从客户端下载文件的客户端代码,代码如下

ServerSocket serverSocket = new ServerSocket(10002);

while(true){

    Socket socket = serverSocket.accept();

    OutputStream Output = socket.getOutputStream();

    FileInputStream input= new FileInputStream(“F:\\Play.mp4”); 

    

    byte[] buf = new byte[1024];

    int length = 0;

    while((length = input.read(buf))!=-1){

        Output.write(buf, 0, length);

    }

    

    String ip = socket.getInetAddress().getHostAddress();

    System.out.println(ip);

    

    input.close();

    socket.close();

}

java socket客户端接收不到大的数据

每个数据包有大小限制,大的数据会被强制拆分成小的数据包,造成你的数据不完整,造成客户端无法接收。

解决的话,需要把你要传的大数据先拆分成一个一个的小数据包,然后客户端接收到后,把这些小数据包再根据报文协议逐个拼成一个完整的大数据。

java socket 多人单对单聊天 客户端的接受问题

我也写过这样的程序,你的意思是只用一个socket然后让他接受信息吧,这样当然不行,既然有单对单的聊天,那么当客户A同时跟客户B客户C聊天的时候会使用到多个socket的.

我当时用的方法是用一个线程来监听来自其他客户的聊天请求的连接,当他接收到聊天请求的时候将socket直接传递给客户聊天线程ServerHold类来处理聊天事件,自己继续等待客户的连接.在程序中用一个Clent类来管理其他用户的信息 比如Clent有一个属性就是ServerHold类的实例

class Clent{

……

public ServerHold sh;

……

}

然后用一个ClentHost类

class ClentHost{

static Clent[] cs = new Clent[10];

public add(Clent clent){}

public del(Clent clent){}

public get(String name){}

}的实例来管理所有的Clent客户类

大体实例是:

class ServerWating extends Thread{

ServerSocket server;

Socket socket;

public ServerWating(){

try{

//监听端口

server = new ServerSocket(12345);

}catch(Exception e){

e.printStackTrace(System.out);

System.out.println(“对不起,监听线程出错”);

System.exit(0);

}

}

public void run(){

while(true){

try{

//等待用户连接

socket = server.accept();

//连接上后 将所得的socket 传递给ServerHold线程类并实例化 具体ServerHold类的参数你可以自己根据需求来写

ServerHold sh = new ServerHold(socket);

//启动该ServerHold线程

sh.start();

}catch(Exception e){

e.printStackTrace(System.out);

System.out.println(“对不起,监听线程出错”);

}

}

}

}

然后是与用户交互的类 ServerHold

class ServerHold extends Thread{

Socket socket;

public ServerHold(Socket socket){

this.socket = socket;

}

//用线程不停的读取对方发来的信息,避免信息的阻塞

public void run(){

try{

//根据socket新建输入流

while(true){

//读取对方发送的信息并从中获取对方的姓名,根据情况,或新建Clent然后将this(ServerHold类的本对象)添加到Clent或直接添加到已有的Clent

//读取对方发送的信息并反馈到程序

}

}catch(Exception e){

//当对方下线会出现错误时保证线程安全退出

}

}

//发送信息到对方,可以根据实际情况来确定方法的参数等内容,然后根据程序的需要直接调用

//在连接建立的时候,要发送一次自己的客户端信息,比如name什么的到对方以便其保存.

public void set(){

//根据socket取得输出流

}

}

当然,上面都是被动连接的,主动连接差不多,也是要根据连接后的socket来新建一个ServerHold类然后进行交互.

大体思想就是这样子的,当然 实现的时候会有好多困难,449775695我的QQ,有什么问题可以来问我.

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月26日 20:14:23
下一篇 2024年3月26日 20:21:31

相关推荐

  • javasocket释放,java里socket

    Java程序为什么需要数据库连接池麻烦告诉我 数据库连接是一件费时的操作,连接池可以使多个操作共享一个连接数据库连接池的基本思想就是为数据库连接建立一个缓冲池。 基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理。我们知道,对于共享资源,有一个很著名的设计模式:资源池 (Resource Pool)。该模式正是为了解决资源的频繁…

    2024年5月23日
    3600
  • linux怎么安装锐捷客户端,如何安装锐捷客户端

    Linux系统怎么安装软件的呀? 打开linux系统,在linux的桌面的空白处右击。在弹出的下拉选项里,点击打开终端。输入sudo -i +需要安装的软件的安装包名称,运行输入用户密码即可即可。输入apt-getsoftname+软件名称,也可以进行软件的安装。 在Windows下安装软件时,只需用鼠标双击软件的安装程序,或者用Zip等解压缩软件解压缩即可…

    2024年5月22日
    4200
  • java实现多客户端通信,java客户端与服务器多次通信

    java实现多个客户端彼此之间通过服务器实现点对点的通信 首先为了方便调试,先创建一个界面用于显示客户端连接信息。其次基于javafx包写的一个简单界面,使用多线程实现多客户端与服务器进行通信。最后java项目内实现n个tcp客户端连接通信即可设计,安全便捷。 服务器告知双方对方的ip地址,并协调由哪一方主动连接。如 协调结果是: 把c2的地址告诉c1,让c…

    2024年5月22日
    4400
  • linux客户端编码设置,linux默认编码

    Linux系统的默认编码怎样设置 首先我们在终端窗口处输入mysql -u root -p 命令,然后输入root帐号密码连接数据库。具体操作如下图所示。 当前,绝大多数linux的默认编码是utf-8,GBK在这上面显示是乱码。 解决方案: Linux字符编码默认为UTF-8,如果出现英文乱码有可能是系统设置的编码方式为GBK。设置locale的根本就是设…

    2024年5月22日
    4500
  • javasocket工具类,java socket工具类

    通过Java中的Socket技术编写能够进行双向通信的客户端和服务器,为了能… 1、Socket编程:使用Socket可以在客户端和服务器之间建立TCP连接,实现双方之间的实时通信。Java提供了Socket类和ServerSocket类,可用于实现Socket编程。 2、java编程对于Socket之间的通信过程如下:服务端往Socket的输出…

    2024年5月22日
    6200
  • c语言telnet客户端,c语言tcp

    C语言问题:局域网聊天系统中的服务器怎么区分不同的客户端并把数据传… 这个问题和语言无关。首先,你可以用key:value的格式来传输数据,这样你的数据传输可以多个key对应多个value,常见的格式json或xml都可以(推荐json),服务端收到后根据不同的key来取value就可以区分出来了。 总结一下,对于这种情况,就是传输层包头里源端口…

    2024年5月21日
    6900
  • 包含javasocket封包的词条

    java怎么处理socket服务端粘包 socket粘包是避免不了的,主要在于接收方如何解包和控制。处理方法:定制socket传输协议。增加包头、命令、数据长度、数据体、结束位。 是指在出现粘包的时候我们的接收方要进行分包处理。先建立服务端的ServerSocket与客户端的Socket。打开连接到Socket输入、输出流。根据协议进行读写操作(如服务端建立…

    2024年5月21日
    4200
  • 包含javasocket语音聊天的词条

    java是如何实现聊天功能的? Socket编程:使用Socket可以在客户端和服务器之间建立TCP连接,实现双方之间的实时通信。Java提供了Socket类和ServerSocket类,可用于实现Socket编程。 Java可以使用Socket编程实现聊天功能。Socket是一种网络通信协议,它可以在不同的主机之间传输数据。在聊天功能中,一般有客户端和服务…

    2024年5月21日
    4900
  • javasocket重新连接,java socket connection reset

    java.net.sockettimeoutexception安卓开发 1、sockettimeoutexception是网络请求超时异常,在网络状况不佳,且设置了RequestTimeOut、ReadTimeOut时会爆出该错误。此时应该给出网络连接超时的提示,并给出用户重试的交互,或建立自动重新连接的线程。 2、这是一个经典错误, Socket不能对外连…

    2024年5月21日
    4000
  • linuxtcp服务端客户端的简单介绍

    linux下tcp通信怎么限制客户端的连接数量 Linux操作系统中,一切都是文件。所以每个TCP连接,都会打开一个文件。为此Linux操作系统限制了每个用户能打开的文件数量,通过ulimit -n 查看。 端口限制:操作系统上端口号1024以下是系统保留的,从1024-65535是用户使用的。由于每个TCP连接都要占一个端口号,所以我们最多可以有60000…

    2024年5月20日
    3700

发表回复

登录后才能评论



关注微信