我正在开发一种多玩家纸牌游戏,需要客户互相通信或一般服务器.我之前从未这样做过,所以我需要一些指导或教程来实现这一目标.
到目前为止,我已经创建了本地的单人版游戏......
我一直在寻找,但我似乎无法找到IRC协议的消息格式.例如,如果我想要输入频道,则客户端可能会发送"输入channelname nick"或沿这些行发送的内容.有人知道吗?
我有一个解决方案,即客户端服务器。客户端和服务器是同一解决方案中的项目。
我想对客户端进行单元测试,这显然要求服务器正在运行。有没有办法在单元测试项目中指定在运行特定单元测试之前应该启动服务器项目?我想我可以明确地启动程序,但我宁愿让测试基础设施为我做这件事。
我想这是一个非常普遍的要求。人们通常如何处理它?(VS2010,如果重要的话,C#。)
我有以下问题。我可以将事务状态设置为“开始、结束或正在进行”。我设置了这个,然后将我的 Transaction 对象序列化到服务器,后者检索它。第一次(当事务处于启动模式时)像魅力一样工作,但是当我重新发送对象时,这次在“正在进行”模式下,服务器继续在“启动”模式下看到它。我已经在序列化之前的行和反序列化之后的行中测试了代码,这绝对是问题所在。任何帮助将不胜感激。相关代码片段如下:
连载
if ((query instanceof Transaction) && !(trx.getTransactionState()==Consts.trx_start)) System.out.println("Not start");
oos.writeObject(query);
oos.flush();
Run Code Online (Sandbox Code Playgroud)
反序列化
while (true) {
Object statement = null;
try {
statement = ois.readObject();
if ((statement instanceof Transaction) && !(((Transaction) statement).getTransactionState()==Consts.trx_start)) System.out.println("Not start 2");
handle_statement(statement, socket);
} catch (IOException e) {
Run Code Online (Sandbox Code Playgroud)
和交易类:
public class Transaction extends Statement{
/**
*
*/
private static final long serialVersionUID = -2284996855537430822L;
Statement statement_list;
int trx_state;
/**
*
*/
public Transaction() {
trx_state = Consts.trx_start;;
}
/**
* @param statement
*/
public …Run Code Online (Sandbox Code Playgroud) java serialization client-server objectoutputstream serializable
我正在写一个假的运送应用程序.客户端发送产品,服务器保留所有发送的产品.
现在服务器 - 因为它只是虚拟的 - 每分钟更新产品的状态(SEND - > ACCEPTED - > SHIPPED - > RECEIVED),现在我希望服务器在更新状态时更新相应的客户端.
我讨论的大多数RMI信息只谈到客户端 - >服务器..但我需要我的服务器为我的客户端调用这个...
希望你们能帮忙!
我想编写一个应用程序来发送带有套接字的文件:
这是我的服务器:
void str_server(int sock)
{
char buf[1025];
const char* filename="test.text";
FILE *file = fopen(filename, "rb");
err_abort("Test");
while (!feof(file))
{
int rval = fread(buf, 1, sizeof(buf), file);
send(sock, buf, rval, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
在这里我的客户:
void RecvFile(int sock, const char* filename)
{
int rval;
char buf[0x1000];
FILE *file = fopen(filename, "wb");
while ((rval = recv(sock, buf, sizeof(buf), 0)) > 0)
{
fwrite(buf, 1, rval, file);
}
close(sock);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我的客户端创建了一个文件....但是不要在文件中写入内容!
我已经开发了一个独立的应用程序(.jar),它正在Linux环境中运行,我希望将此应用程序保存在服务器(Linux)上并希望通过其他系统进行访问.
请建议这是否可行.
我在理解套接字编程时遇到问题,需要一些帮助。我想修改我编写的接受3个客户端的服务器代码。我知道我想为每个客户端使用派生,但是我不确定如何在我的代码中实现它。这是我为一个客户编写的原始代码。任何帮助,将不胜感激。
服务器:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
void error(const char *msg)
{
perror(msg);
exit(1);
}
int main(int argc, char *argv[])
{
int sockfd, newsockfd, portno;
socklen_t clilen;
char buffer[256];
struct sockaddr_in serv_addr, cli_addr;
int n;
if (argc < 2) {
fprintf(stderr,"ERROR, no port provided\n");
exit(1);
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
bzero((char *) &serv_addr, sizeof(serv_addr));
portno = atoi(argv[1]);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr …Run Code Online (Sandbox Code Playgroud) 在客户端和服务器上验证用户创建的最佳方法是什么?
我试图验证服务器和客户端的用户创建.首先,我使用了方法和Accounts.createUser功能,但即使文档说它应该也没用.
我试过不同的方法.我曾经Accounts.createUser在客户端和Account.onCreateUser服务器上验证它.问题是我无法验证密码,因为它是加密的.
那么最好的方法是什么?
我一直在遵循本教程“ http://tech.pro/tutorial/704/csharp-tutorial-simple-threaded-tcp-server ”设置可发送和接收消息并连接多个客户端的小型服务器。
一切正常,这很好。.但是不幸的是,本教程中缺少的一件事是客户端如何设置侦听器以侦听服务器。
我只有这么多:
public void SetupReceiver()
{
TcpClient tcpClient = new TcpClient(this.Host, this.Port);
NetworkStream networkStream = tcpClient.GetStream();
// What next! :( or is this already wrong...
}
Run Code Online (Sandbox Code Playgroud)
据我所能想象的..我需要连接到服务器(作为TcpClient)并获取流(如上)。然后等待消息并对其进行处理。发送邮件后,我不能让客户端立即从服务器收到消息的原因是,客户端将向服务器发送消息,然后该消息将广播到所有连接的客户端。因此,每个客户端都需要“侦听”来自服务器的消息。
client-server ×10
java ×4
sockets ×3
c ×2
c# ×2
tcp ×2
c++ ×1
distributed ×1
irc ×1
javascript ×1
localhost ×1
meteor ×1
rmi ×1
serializable ×1
tcpclient ×1
unit-testing ×1
unix ×1