标签: client-server

如何通过java中的套接字发送图像?

我正在写一个客户端 - 服务器程序,我希望它发送一个图像.代码如下:

//RECEIVER
while(true){
  try{
            socket = server.accept();

            out = new ObjectOutputStream(socket.getOutputStream());
            out.flush();
            in = new ObjectInputStream(socket.getInputStream());

            System.out.println("Connected to "+PORTA+".");

            while(!socket.isClosed()){ 
                System.out.println("\nPrint the action");
                azione = reader.readLine();

           if(azione.equals("screenshot")){

                    out.writeObject("screenshot");
                    out.flush();
                    BufferedImage screenshot = ImageIO.read(in);

                    ImageIO.write(screenshot, "jpg", new File("screenshot.jpg"));
                }
  }catch(Exception ex){
            System.out.println("Not connected.\n");
  } 
}
Run Code Online (Sandbox Code Playgroud)

和服务器:

while(true){ 
   try{
            socket = new Socket(INDIRIZZO, PORT);

            out = new ObjectOutputStream(socket.getOutputStream());
            out.flush();
            in = new ObjectInputStream(socket.getInputStream());

            while(!socket.isClosed()){
                try {
                  action = (String)in.readObject();
                  if(azione.equals("screenshot")){
                        BufferedImage screenshot = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
                        ImageIO.write(screenshot, "jpg", out);
                    }catch(Exception …
Run Code Online (Sandbox Code Playgroud)

java sockets client-server image javax.imageio

7
推荐指数
2
解决办法
5万
查看次数

scalabale应用程序中的点对点消息传递?

在谷歌搜索如何在聊天信使中发送/接收消息之后,我遇到了他们使用基于队列的消息系统.我只想弄清楚这个功能的高级设计

每个矿山的HLD理解: - 说朋友1和朋友2在线.朋友1已建立到Web服务器1的HTTP Web连接,并且朋友2已建立到Web服务器2的HTTP Web连接.朋友1将消息发送给朋友2.

现在,一旦消息到达web服务器1,我需要将消息传送到web服务器2,以便可以通过已建立的web连接将消息推回给朋友2.

我相信这里可以使用分布式自定义Java队列将消息从一个服务器传播到另一个服务器.一旦消息到达一个服务器,它就会将其推送到分布式队列(由于负载平衡和高可用性而分配队列)和消息内容,fromUserId,toUserId.队列中将有侦听器,它将看到poppedIn消息的目标userId,并查找哪个webserver目标userId处于活动状态.如果用户处于活动状态,则弹出消息并将其推送到客户端,否则将其存储在db中,以便在联机后可以将其拉出一次.要查看哪个用户在哪个服务器上处于活动状态,我们可以使用userId作为键维护树形图,将值维护为serverName以便高效查找

可能实际设计必须比上述简要更复杂/可扩展.想知道这是否是可扩展聊天信使的正确方向?

此外,我认为我们需要有多个分布式队列,而不是一个用于这种可扩展应用程序的队列.但是,如果我们有多个分布式队列,系统将如何确保跨分布式队列的FIFO消息传递?

java queue client-server whatsapp

7
推荐指数
1
解决办法
686
查看次数

在两个不同的系统之间同步对象,最好的方法?

我正在使用基于XML的有效负载在iPhone和网站之间同步两个业务对象,并且愿意为最佳例程征求一些想法.

这个问题的本质是相当通用的,我可以看到它适用于需要在Web实体和客户端(桌面,移动电话等)之间同步业务对象的各种不同系统.

可以双方编辑,删除和更新业务对象.双方都可以在本地存储对象,但同步仅在iPhone端启动,以便断开连接查看.所有对象都有一个updated_at和created_at时间戳,并且两边都有一个RDBMS支持(iPhone端的SQLite和网络上的MySQL ......再次我认为这不重要)并且手机确实记录了最后一次尝试同步.否则,不存储其他数据(此刻).

您将使用什么算法来最小化系统之间的网络聊天以进行同步?如果"软删除"不是一个选项,你将如何处理删除?您会添加哪些数据模型更改以设置此功能?

iphone client-server ruby-on-rails data-synchronization

6
推荐指数
1
解决办法
4605
查看次数

WCF:从服务器访问服务实例

语境:

我需要开发一个监视服务器来监视我们的一些应用程序(这些应用程序在c#中).所以我决定使用WCF开发系统,这似乎适合我的需求.

这些应用程序在启动时必须将自己注册到监视服务器.之后,监视服务器可以调用这些应用程序的Start或Stop方法.

一切都在同一台机器上完全执行,无需远程执行任何操作.

所以我开发了一个很好的原型,一切正常.每个应用程序将自己注册到监视服务器.

题:

ApplicationRegistrationService(请参阅下面的代码)是监视服务的实现,由于ServiceBehavior属性,它是一个单例实例.

这是我的问题:我想访问ApplicationRegistrationService每个示例的内容,从我的服务器(ConsoleMonitoringServer在示例中)连接的应用程序的数量.但是,我不知道如何实现这一目标.

我是否需要在我的服务器中创建一个通道,就像我在客户端(ConsoleClient)中所做的那样,或者它是否有更好的方法来实现这一目标?

码:

出于此问题的目的,代码非常简化:

//The callback contract interface
public interface IApplicationAction
{
    [OperationContract(IsOneWay = true)]
    void Stop();

    [OperationContract(IsOneWay = true)]
    void Start();
}

[ServiceContract(SessionMode = SessionMode.Required, 
    CallbackContract = typeof(IApplicationAction))]
public interface IApplicationRegistration
{
    [OperationContract]
    void Register(Guid guid, string name);

    [OperationContract]
    void Unregister(Guid guid);
}

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, 
    ConcurrencyMode = ConcurrencyMode.Multiple)]
public class ApplicationRegistrationService : IApplicationRegistration
{
    //IApplicationRegistration Implementation
}

public class ApplicationAction : IApplicationAction …
Run Code Online (Sandbox Code Playgroud)

c# wcf client-server

6
推荐指数
1
解决办法
3559
查看次数

限制服务器端返回的行数(强制限制)

所以我们有一个软件,它的SQL语句编写得很糟糕,导致表中的每一行都被返回.表中有几百万行,因此这会导致严重的内存问题和客户端计算机崩溃.供应商正在为该问题创建补丁,但仍需要几周时间.与此同时,我们试图找出一种限制服务器端返回结果数量的方法,就像临时修复一样.

我没有真正的希望有一个解决方案,我环顾四周,并没有真正看到任何方法这样做,但我希望有人可能有一个想法.

先感谢您.

编辑

我忘记了一条重要的信息,我们无法访问源代码,因此我们无法在形成SQL语句的客户端更改此信息.没有真正的服务器端组件,客户端只是直接访问数据库.任何解决方案基本上都需要一个过程,触发器或某种SQL-Server 2008设置/命令.

sql-server client-server sql-server-2008

6
推荐指数
1
解决办法
1754
查看次数

如何在Android中使用UDP?

我是Android平台的新手.我需要使用我的Android UDP客户端与UDP服务器建立连接.现在,我需要知道如何在Android中使用UDP.请指导我这样做.

client android udp client-server

6
推荐指数
1
解决办法
1万
查看次数

简单的Java文件传输程序问题

我正在尝试从服务器到客户端进行简单的文件传输.

它需要像这样:

客户端要求提供文件.

服务器将文件发送到客户端.

现在在代码中(下面)(这是我找到的唯一代码,很难找到)它只向我发送一个"好"的文本文件(甚至只能使它成为客户端中的一行).如果我尝试发送任何其他文件类型(如图像或rar文件),它会被损坏.

那么,有人可以帮我找一些可以发送和接收所有类型文件的工作代码(用Java),或者向我解释这段代码的问题是什么.

服务器端:

public class FileServer {   
    public static void main(String args[])throws IOException
    { 
        ServerSocket ss=null;
        try
        {  
            ss=new ServerSocket(8081);
        }
        catch(IOException e)
        { 
            System.out.println("couldn't listen");
            System.exit(0);
        }
        Socket cs=null;
        try
        { 
            cs=ss.accept();
            System.out.println("Connection established"+cs);
        }
        catch(Exception e)
        { 
            System.out.println("Accept failed");
            System.exit(1);
        } 
        PrintWriter put=new PrintWriter(cs.getOutputStream(),true);
        BufferedReader st=new BufferedReader(new InputStreamReader(cs.getInputStream()));
        String s=st.readLine();
        System.out.println("The requested file is : "+s);
        File f=new File(s);
        if(f.exists())
        { 
            BufferedReader d=new BufferedReader(new FileReader(s));
            String line;
            while((line=d.readLine())!=null)
            {
                put.write(line);
                put.flush();
            }
            d.close();
            System.out.println("File …
Run Code Online (Sandbox Code Playgroud)

java client-server file-transfer

6
推荐指数
1
解决办法
2万
查看次数

套接字创建 - 删除是非常昂贵的过程吗?

我正在研究客户端/服务器应用程序.我准备了许多文章,并发现了一个非常常见的声明"Creation/deletion of socket is very expensive process in terms of using system resources".但是没有解释它如何消耗如此多的资源.
任何人都能看到这个吗?

sockets client-server

6
推荐指数
1
解决办法
1884
查看次数

如何将命令提示符下运行的客户端 - 服务器聊天应用程序转换为基于Web的应用

我使用套接字编程创建了多个客户端 - 服务器聊天应用程序,我可以在命令提示符下将其部署为JAR文件.现在我需要做些什么来改变使用tomcat服务器在Web浏览器上运行这个应用程序?

我的服务器代码:

package com.Aricent;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.*;
import java.sql.DriverManager;

public class Server {

    static ServerSocket serverSocket=null;
    static Socket clientSocket=null;
    static final int max=20;
    static clientThread[] threads=new clientThread[max];
    public static void main(String arg[])
    {
        int portNumber=2222;
        try{
        serverSocket=new ServerSocket(portNumber);
        }catch(IOException e)
        {
            System.out.println(e);
        }

        while(true)
        {
            try{
                clientSocket=serverSocket.accept();
                int i=0;
                for(i=0;i<max;i++)
                {
                    if(threads[i]==null)// searching for empty position
                    {
                        (threads[i]=new clientThread(clientSocket, threads)).start();
                        break;
                    }
                }
                if(i==max)
                {
                    PrintStream os=new PrintStream(clientSocket.getOutputStream());
                    os.println("Server …
Run Code Online (Sandbox Code Playgroud)

java sockets tomcat chat client-server

6
推荐指数
1
解决办法
820
查看次数

编写一个简单的C++ protobuf流客户端/服务器

我想使用protobuf在客户端和服务器之间来回发送消息.在我的情况下,我想从服务器向客户端发送任意数量的protobuf消息.如何在C++中快速构建它?

注意:在汇总了一个非常有用的Kenton Varda答案Fulkerson对stackoverflow的回答之后,我写了这个问题和我的答案.其他人也提出了类似的问题并遇到了类似的障碍 - 请看这里,这里这里.

我是protobuf和asio的新手,所以请随时纠正/建议改进,或提供自己的答案.

c++ client-server protocol-buffers boost-asio

6
推荐指数
2
解决办法
5573
查看次数