我们正在开发一种点对点通信软件,允许一些杂货店将他们的库存与我们称之为"总部"的库存同步.为此,我们考虑WCF + WPF,没有IIS和Web服务.我对WCF的体验基本上是零,所以我的问题是使用WCF的TCP comm解决方案是否有效.正在传输的数据非常有限,对于压缩的纯文本文件大约2MB(因此我们发送二进制数据!),这仅在每天进行一次.因此,带宽/负载不应成为问题.此时的想法是在HQ上运行WCF"服务器".商店让自己知道该服务器,然后来回发送文件(类似于聊天应用程序).我不确定的是:每家商店都需要有一个WCF"服务器"(或端点)吗?服务器(= HQ)如何将文件发送到其中一个客户端(=商店)?每个商店都可以将文件发送到任何其他商店和总部,每个商店也可以"请求"来自任何其他商店/总部的文件.
两个限制:由于预算原因,所涉及的机器/计算机都不能运行Windows服务器,并且如之前所述,IIS是不可行的.
在经常需要向Web服务发送请求的iPhone应用程序(或一般移动设备)上,最好使用一个单一的请求来获取大量数据,或者为每个元素提取多个(可能是同时的)请求获取的数据量.
我想加载节点中的元素列表.我有节点的ID.我可以获取元素的两种方法如下:
关于那个我之间的平衡.
你怎么看 ?
我正在尝试编写简单的客户端和服务器C程序,在不同的终端中相互通信.
服务器必须创建公共fifo并等待客户端.与此同时,客户端正在创建自己的fifo,服务器的响应将通过该fifo来实现.客户端的任务是向服务器发送队列创建的名称,并返回ls命令的结果.
我确实搜索了一个答案,例如:fifo-server-program,example-of-using-named-pipes-in-linux-bash,how-to-send-a-simple-string-between-two-programs-使用管道.我从第三个链接的代码开始,慢慢修改它.
我现在得到的是一个客户端从用户那里获取输入,将其发送到服务器并将其接收回来.但它只能工作一次.我不知道为什么.主要功能的主体在下面.我将不胜感激任何帮助.
编辑: 我搞定了!:D代码在下面,也许它会帮助某人.
server.c代码:
#include <unistd.h>
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
int main(int argc, char* argv[])
{
int fds[2];
char tab[BUFSIZ];
int fd, n;
char *myfifo = "/tmp/serwer";
char *myfifo2 = "/tmp/client";
pipe(fds);
mkfifo(myfifo,0666);
while(1)
{
fds[0]=open(myfifo2,O_RDONLY);
fds[1]=open(myfifo,O_WRONLY);
read(fds[0],tab,BUFSIZ);
if (strcmp("klient",tab)==0) {
printf("Od klienta: %s\n",tab);
fd=open(tab,O_WRONLY);
if(fork()==0)
{
dup2(fds[1],1);
close(fds[1]);
execlp("ls","ls","-l",NULL);
close(fds[0]);
close(fds[1]);
}
else
{
dup2(fds[0],0);
n = read(fds[0],tab,BUFSIZ);
write(fd,tab,n);
close(fds[0]);
close(fds[1]);
}
}
memset(tab, …Run Code Online (Sandbox Code Playgroud) 我写完了一个工作正常的Client/Server Socket通信程序.现在我正在试图弄清楚如何制作它,以便我可以同时与服务器建立多个客户端连接.我环顾四周,似乎有不止两种不同的方法来做到这一点.所以我来这里是为了向你们寻求帮助/建议.
我的服务器:
public class Server {
private ServerSocket serverSocket = null;
private Socket clientSocket = null;
public Server() {
try {
serverSocket = new ServerSocket(7003);
} catch (IOException e) {
System.err.println("Could not listen on port: 7003");
System.exit(1);
}
try {
clientSocket = serverSocket.accept();
} catch (IOException e) {
System.err.println("Accept failed");
System.exit(1);
}
}
public void startServer() throws IOException {
PrintWriter output = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine, outputLine;
outputLine = "Connected to Server"; …Run Code Online (Sandbox Code Playgroud) 我正在使用C#开发一个Client-Server应用程序.基本上,服务器是SQL服务器,客户端是用C#开发的.我想知道的是在任何时候限制使用该应用程序的用户数量的最佳方式(如果有的话) - 比方说我希望限制为两个用户.我会限制他们访问SQLserver吗?
我正在开发一个客户端/服务器程序,我的客户端必须向服务器发送消息.
示例消息C结构:
struct Registration
{
char multicastGroup[24];
pid_t clientPid;
};
Run Code Online (Sandbox Code Playgroud)
用于序列化struct的客户端代码段
struct Registration regn ;
regn.clientPid = getpid();
strcpy(regn.multicastGroup, "226.1.1.1");
printf("PID:%d\n", regn.clientPid);
printf("MG:%s\n", regn.multicastGroup);
printf("Size:%d\n", sizeof(regn)); //Size is 28
data = (unsigned char*)malloc(sizeof(regn));
memcpy(data, ®n, sizeof(regn));
printf("Size:%d\n", sizeof(data)); //Size is 4.
Run Code Online (Sandbox Code Playgroud)
用于反序列化数据的服务器代码
if(recvfrom(sd, recvBuf, recvBufSize, 0, (struct sockaddr*)&clientAddr, &len) < 0)
{
printf("Error receiving message from client\n");
}
else
{
printf("Message received:%s\n", recvBuf);
printf("Size :%d\n", strlen(recvBuf));
memcpy(®n, recvBuf, sizeof(regn));
printf("PID:%d\n", regn.clientPid);
printf("MG:%s\n", regn.multicastGroup);
}
Run Code Online (Sandbox Code Playgroud)
复制结构后unsigned char *,数组的大小只有4. …
我想这是Client-Server的每个初学者都在寻找的基本问题:我开发了一个C#.NET Client- Server软件.
应用程序的基本概述
应用程序包含一个内置数据库,因此如果服务器不可用,用户可以使用其本地系统可用的数据库.如果数据库在Server上可用,则将使用Server数据库.两个数据库synchronize互相点击按钮.所以我有两个连接字符串,一个用于本地系统,另一个用于服务器.它们都是动态创建的.
对于:客户端安装 - > 现在我正在使用Click One Application
问题1:
我有一个基于SQL Server Express的数据库部署.我创建了一个具有SQL Server 2008等先决条件的clickone应用程序.当我安装我的clickone时,我的应用程序安装正确,没有任何错误,但在启动应用程序时,它给了我错误,我的应用程序无法找到数据库C:\Users\Xnor\AppData\Local\Apps\2.0\Data\N24R9574.9H1\V0Q1MX0C.0X9\....
我浏览了stackoverflow,发现将我复制.mdf到这个位置将解决我的问题.但为什么会这样呢.为什么不复制自己?
有没有办法永久地将数据库附加到我的应用程序,以便我可以避免这种手动工作?
它只是将.mdf文件复制到该位置的指令,就是这样.那么有什么办法可以发挥作用,也许是有可能和可暗示的,.mdf可以附加在资源中,并可以从那里使用.寻找专家建议,实现它的最佳方法.
对于服务器:
我用来安装Microsoft SQL Server Management Studio Express,然后我用它来为我的服务器创建数据库,然后IT用来与我的应用程序一起工作.
问题2
我怎样才能采取这些措施.告诉非IT人员并教他们一直Microsoft SQL Server Management Studio Express在服务器上安装,然后在其上创建数据库,然后将其连接字符串提供给应用程序以使其工作带来很多问题.
所以我的基本要求就是在安装时为用户提供流畅的体验.正在进行安装的人不是一个高大的极客.他们可以做,Next Next Next但他们不喜欢这么多配置.有没有专业的方法来做到这一点.我猜这是客户端 - 服务器软件最重要的事情,我从未见过这样的软件要求你做这么多的配置.
我不愿意使用Click-one Deployment,因为它看起来非常不专业,我觉得它的功能非常有限.所以请提出一些可以满足这一要求的替代方案.
此外,我想知道这是一个非常重要的事情,并且没有现成的教程,我能够在谷歌和youtube上找到,我无助于找到一个正确的方向如何自动化这个东西,或者可能是一个方式,这样我可以减少步骤.
我准备部署两个设置:一个用于客户端,一个用于服务器
如果需要任何其他信息,请告诉我.期待着大力支持.问候.
我正在开发一个带有电子邮件功能的Android应用程序.我希望我的用户能够在飞行模式下撰写和发送电子邮件.为此,我需要某种队列,可以检查是否有网络和发送等.我想这已经完成了100次.但我不确定为什么我的搜索量不会太多.有谁知道我可以用来完成这个的库或git项目?如果没有,有谁知道如何做到这一点?
我相信它被称为Queue and send pattern.
更新
我正在就这个问题开始赏金.我希望的是一个不使用SMS的工作示例.对于我的特殊情况,我正在开发一个Appengine Connected Android项目.客户端需要将数据(字符串,位图等在特定的POJO下称为Dog)发送到服务器.我希望能够以某种方式排队这些数据.我可以使用Gson将数据保存到文件等.最重要的是我需要能够检查网络.当有网络时,我将队列出列到服务器.如果没有网络,我会一直保存到队列中.
我的队列可以是Queue<Dog>,这里Dog是我的类字段,诸如Bitmap(或路径图像), String,long等等.
我正在寻找一个有效的例子.它可以非常简单,但示例必须有效.一个git zip会很棒.对于这个问题,我放弃了近一半的积分.
class Dog{
String dogname;
String pathToImage;
int dogAge;
//etc.
}
//Design pattern for sending Dog to server
0) Unmarshall queue from file using Gson
1) Add dog to queue
2) If there is network, loop through queue and send data to server
3) if there is no network save queue to file
//Ideally, as soon as …Run Code Online (Sandbox Code Playgroud) 我正在写一个客户端 - 服务器程序,我希望它发送一个图像.代码如下:
//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) 我目前有一个TCP服务器设置,可以接受来自客户端的连接并回显客户端输入的任何内容.如何让多个客户端连接到服务器并将其输入发送到所有客户端?
看来我应该分叉,但我不完全确定如何......
在服务器上,我应该放置一个从accept(或listen?)开始的无限循环,当有新连接时它会分叉吗?然后在子进程中,我将不得不从先前的进程关闭套接字并连接到新的进程,但我再次不确定.
关于forks和socket操作,伪代码会是什么样子?我猜:
while(1) //before connection or accept?
pid = fork()
if(pid==0)
// open socket from client
// run the rest of the code
// end process when client disconnects
else
// close socket from client
Run Code Online (Sandbox Code Playgroud) client-server ×10
c ×3
java ×3
c# ×2
sockets ×2
tcp ×2
.net ×1
android ×1
concurrency ×1
image ×1
iphone ×1
linux ×1
mkfifo ×1
mobile ×1
networking ×1
sql ×1
sql-server ×1
wcf ×1
web-services ×1
winforms ×1
wpf ×1