Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我对如何创建一个新线程来向客户端显示时间感到困惑_C_Multithreading_Sockets_Networking_Pthreads - Fatal编程技术网

C 我对如何创建一个新线程来向客户端显示时间感到困惑

C 我对如何创建一个新线程来向客户端显示时间感到困惑,c,multithreading,sockets,networking,pthreads,C,Multithreading,Sockets,Networking,Pthreads,我无法将时间发送给客户!我知道如何在服务器上显示时间,但我不知道如何为聊天服务器创建另一个线程,将当前系统时间广播给所有连接的用户 客户。我知道,为了创建线程,您需要使用: pthread_t newClient; pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg); 我对如何向客户显示时间感到困惑 我计划使用此代码(在我的服务器代码中)每

我无法将时间发送给客户!我知道如何在服务器上显示时间,但我不知道如何为聊天服务器创建另一个线程,将当前系统时间广播给所有连接的用户 客户。我知道,为了创建线程,您需要使用:

pthread_t newClient;
pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);
我对如何向客户显示时间感到困惑

我计划使用此代码(在我的服务器代码中)每五秒钟显示一次时间:

time_t tm = time();
if (time()-tm>=5) {
    char buffer[256],buff[255]; 
    time_t   now;
    struct tm *ts;
    now = time(0);
    ts = localtime(&now);
    strftime(buff, sizeof(buff), "%a %Y-%m-%d %H:%M:%S %Z", ts);
    printf("%s\n", buff);
    tm = time();
}
以下是我为客户端制作的线程(来自服务器的代码):

if(pthread\u create(&thread\u id,NULL,func,(void*)&connfd)<0)
{
perror(“无法创建线程”);
返回1;
}
if(pthread_create(&jointhread_id,NULL,join,(void*)和thread_id)<0)
{
perror(“无法创建线程”);
返回1;
}
任何指导都会有帮助

客户端代码:

#include <netdb.h>
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <sys/socket.h> 
#define MAX 80 
#define PORT 8080 
#define SA struct sockaddr
void func(int sockfd)
{
    char buff[MAX];
    int n;
    for (;;) {
        bzero(buff, sizeof(buff));
        printf("Enter the string : ");
        n = 0;
        while ((buff[n++] = getchar()) != '\n')
            ;
        write(sockfd, buff, sizeof(buff));
        bzero(buff, sizeof(buff));
        read(sockfd, buff, sizeof(buff));
        printf("From Server : %s", buff);
        if ((strncmp(buff, "exit", 4)) == 0) {
            printf("Client Exit...\n");
            break;
        }
    }
}

int main()
{
    int sockfd, connfd;
    struct sockaddr_in servaddr, cli;
    
    // socket create and verification
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd == -1) {
        printf("socket creation failed...\n");
        exit(0);
    }
    else
        printf("Socket successfully created..\n");
    bzero(&servaddr, sizeof(servaddr));
    
    // assign IP, PORT
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    servaddr.sin_port = htons(PORT);
    
    // connect the client socket to server socket
    if (connect(sockfd, (SA*)&servaddr, sizeof(servaddr)) != 0) {
        printf("connection with the server failed...\n");
        exit(0);
    }
    else
        printf("connected to the server..\n");
    
    // function for chat
    func(sockfd);
    
    // close the socket
    close(sockfd);
}
#包括
#包括
#包括
#包括
#包括
#定义最大值80
#定义端口8080
#定义SA结构sockaddr
无效函数(int-sockfd)
{
字符buff[MAX];
int n;
对于(;;){
bzero(buff,sizeof(buff));
printf(“输入字符串:”);
n=0;
而((buff[n++]=getchar())!='\n')
;
写入(sockfd、buff、sizeof(buff));
bzero(buff,sizeof(buff));
读取(sockfd、buff、sizeof(buff));
printf(“来自服务器:%s”,buff);
如果((strncmp(buff,“exit”,4))==0){
printf(“客户端退出…\n”);
打破
}
}
}
int main()
{
int sockfd,connfd;
servaddr中的struct sockaddru,cli;
//套接字创建和验证
sockfd=套接字(AF_INET,SOCK_STREAM,0);
如果(sockfd==-1){
printf(“套接字创建失败…\n”);
出口(0);
}
其他的
printf(“套接字已成功创建..\n”);
bzero(&servaddr,sizeof(servaddr));
//分配IP、端口
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=inet_addr(“127.0.0.1”);
servaddr.sinu端口=htons(端口);
//将客户端套接字连接到服务器套接字
if(connect(sockfd,(SA*)&servaddr,sizeof(servaddr))!=0){
printf(“与服务器的连接失败…\n”);
出口(0);
}
其他的
printf(“连接到服务器..\n”);
//聊天功能
func(sockfd);
//合上插座
关闭(sockfd);
}
#include <netdb.h>
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <sys/socket.h> 
#define MAX 80 
#define PORT 8080 
#define SA struct sockaddr
void func(int sockfd)
{
    char buff[MAX];
    int n;
    for (;;) {
        bzero(buff, sizeof(buff));
        printf("Enter the string : ");
        n = 0;
        while ((buff[n++] = getchar()) != '\n')
            ;
        write(sockfd, buff, sizeof(buff));
        bzero(buff, sizeof(buff));
        read(sockfd, buff, sizeof(buff));
        printf("From Server : %s", buff);
        if ((strncmp(buff, "exit", 4)) == 0) {
            printf("Client Exit...\n");
            break;
        }
    }
}

int main()
{
    int sockfd, connfd;
    struct sockaddr_in servaddr, cli;
    
    // socket create and verification
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd == -1) {
        printf("socket creation failed...\n");
        exit(0);
    }
    else
        printf("Socket successfully created..\n");
    bzero(&servaddr, sizeof(servaddr));
    
    // assign IP, PORT
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    servaddr.sin_port = htons(PORT);
    
    // connect the client socket to server socket
    if (connect(sockfd, (SA*)&servaddr, sizeof(servaddr)) != 0) {
        printf("connection with the server failed...\n");
        exit(0);
    }
    else
        printf("connected to the server..\n");
    
    // function for chat
    func(sockfd);
    
    // close the socket
    close(sockfd);
}