C双向客户端服务器示例

时间:2017-05-13 23:13:29

标签: c sockets bidirectional

我对套接字相当新,并了解服务器客户端关系的重点。我只是想知道客户端是否有某种方式在c中向服务器返回响应。

我想,我应该使用相同的套接字连接,还是在我的客户端中创建另一个文件描述符以将其发送到我的服务器。还有更好的方法来实现这个吗?

主要目标是进行双向沟通。

我在下面提供了我的示例代码:

服务器:

anullsrc

客户端:

void connection(char* sentMessage){
int listenfd = 0, connfd = 0;
struct sockaddr_in serv_addr; 

char sendBuff[1025];
time_t ticks; 

listenfd = socket(AF_INET, SOCK_STREAM, 0);
memset(&serv_addr, '0', sizeof(serv_addr));
memset(sendBuff, '0', sizeof(sendBuff)); 

serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(5000); 

bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); 

listen(listenfd, 10); 

while(1)
{
    connfd = accept(listenfd, (struct sockaddr*)NULL, NULL); 

    ticks = time(NULL);
    snprintf(sendBuff, sizeof(sendBuff), "%.90s\r\n", sentMessage);
    write(connfd, sendBuff, strlen(sendBuff)); 
    printf("Snoopy Detected: %s", sendBuff);

    close(connfd);
    sleep(1);
 }
}

int main(int argc, char *argv[])
{
//construct a string to pass to the client
char* protocol = "eax:valuevlaue, ebx:asdjasdjasd, ecx:sadafw, edx:asdfsasd";

connection(protocol);
}

1 个答案:

答案 0 :(得分:0)

哦,我做到了!

显然,套接字本质上是双向的,所以我所要做的就是write()回到sockfd并从服务器端读取它!