如何解决我对如何创建一个新的线程向客户端显示时间感到困惑
我无法将时间发送给客户!我知道如何在服务器上显示时间,但我不知道如何为聊天服务器创建另一个线程,该线程向所有连接的服务器广播当前系统时间 客户。我知道要创建线程,您需要使用:
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_create( &thread_id,NULL,func,(void*) &connfd) < 0)
{
perror("could not create thread");
return 1;
}
if( pthread_create( &jointhread_id,join,(void*) &thread_id) < 0)
{
perror("could not create thread");
return 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,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);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。