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);
}