小编rag*_*roh的帖子

C,套接字编程:使用select()将多个客户端连接到服务器

我正在尝试制作一个可以由多个客户端连接的服务器.到目前为止,这是我的代码:

客户:

int main(int argc, char **argv) {

  struct sockaddr_in servaddr;
  int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

  if (sock == -1) perror("Socket");

  bzero((void *) &servaddr, sizeof(servaddr));
  servaddr.sin_family = AF_INET;
  servaddr.sin_port = htons(6782);
  servaddr.sin_addr.s_addr = inet_addr(<server_ip_address>);

  if (-1 == connect(sock, (struct sockaddr *)&servaddr, sizeof(servaddr)))
    perror("Connect");

  while(1) {

    char message[6];
    fgets(message, 6, stdin);

    message[5] = '\0';

    send(sock, message, 6, 0);
  }


  close(sock);
}
Run Code Online (Sandbox Code Playgroud)

服务器:

int main(int argc, char **argv) {

  fd_set fds, readfds;
  int i, clientaddrlen;
  int clientsock[2], rc, numsocks = 0, …
Run Code Online (Sandbox Code Playgroud)

c sockets client network-programming select-function

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

通过send()recv(),Socket编程,C发送多个消息

我正在尝试创建一个程序(客户端),它可以根据用户的请求向服务器发送消息.剥离代码如下:

客户:

int main(int argc, char **argv) {

  struct sockaddr_in servaddr;
  int sock = socket(AF_INET, SOCK_STREAM, 0);

  memset(&servaddr, 0, sizeof(servaddr));
  servaddr.sin_family = AF_INET;
  servaddr.sin_port = htons(6789);
  servaddr.sin_addr.s_addr = inet_addr(<ip_address_of_server>);

  while(1) {

    char message[161];
    fgets(message, 161, stdin);

    /* Replacing '\n' with '\0' */
    char *tmp = strchr(message, '\n');
    if (tmp) *tmp = '\0';

    connect(sock, (struct sockaddr *)&servaddr, sizeof(servaddr));
    send(sock, message, strlen(message), 0);
    close(sock);
  }
}
Run Code Online (Sandbox Code Playgroud)

服务器:

int main(int argc, char **argv) {

  struct sockaddr_in servaddr;  
  int sock = socket(AF_INET, SOCK_STREAM, 0); …
Run Code Online (Sandbox Code Playgroud)

c sockets send recv

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

标签 统计

c ×2

sockets ×2

client ×1

network-programming ×1

recv ×1

select-function ×1

send ×1