【发布时间】:2015-03-21 13:40:19
【问题描述】:
首先,我是 c 的初学者。该程序模拟客户端通过端口 8000 上的 telnet 连接到的服务器,并为其提供用户名和密码,然后服务器对其进行验证。我成功地从客户端获取了用户名,但我在验证它时遇到了一些问题。我需要将用户名与凭据列表进行比较,但它似乎不起作用。这是我到目前为止编写的代码...
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
int main()
{
char * credentialsList[7][2] = {{"Alice","abcdef"}, {"Bob","1234567"}, {"Cindy","qwerty"}, {"David","abababab"}, {"Eve", "cdefgh"}, {"Frank","7654321"}, {"George", "12341234"}};
int serverSocket=socket(AF_INET, SOCK_STREAM, 0);
int new_socket, i;
char *message, client_message[10];
struct sockaddr_in server, client;
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(8000);
bind(serverSocket, (struct sockaddr *)&server, sizeof(server));
listen(serverSocket,2);
int c = sizeof(struct sockaddr_in);
new_socket = accept(serverSocket, (struct sockaddr *)&client, (socklen_t*)&c);
message = "Welcome! You Are Now Connected To The Server.\n\n";
write(new_socket, message, strlen(message));
message = "Please Enter A Valid Username: ";
write(new_socket, message, strlen(message));
recv(new_socket, client_message, 10, 0);
for (i=0; i<7; i++)
{
if (strcmp(credentialsList[i][0], client_message) == 0)
{
// TO DO
puts("GOT YOU");
}
}
return 0;
}
提前致谢:)
【问题讨论】:
-
不清楚接收到的数据是什么样子的。它有空终止符吗?
-
@ForceBru 代码已编辑!
-
我的意思是,你能举一个收到的数据的例子吗?
-
一个例子是用户名“Alice”@ForceBru
标签: c string sockets multidimensional-array