如何在linux下用boost库实现多线程的聊天服务器

如何在linux下用boost库实现多线程的聊天服务器,第1张

首先把Boost库的头文件存放到/usr/include/boost/路径下,再把Lib文件存放到/usr/local/lib/boost/路径下。修改/etc/profile文件,在此文件中增加如下2个环境变量:

BOOST_INCLUDE=/usr/include/boost

export BOOST_INCLUDE

BOOST_LIB=/usr/local/lib/boost

export BOOST_LIB

写一个如下所示的cpp文件。

//samlpe.cpp

#include <iostream>

#include <string>

#include <boost/thread.hpp>

using namespace std

void threadRoutine(void)

{

boost::xtime time

time.nsec = 0

time.sec = 20

cout <<"线程函数做一些事情" <<endl

boost::thread::sleep(time)

}

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <pthread.h>

#include <unistd.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#define PORT 8888

void *yourfunction(void *connect_fd)

{

int connfd = *((int *)connect_fd)

。。。。

} //你没说具体的应用,所以只能写这么多了。在这里面直接对connfd调用read和write函数就可以和客户端收发数据了。

//补充:是啊 返回给客户端什么信息啊?

int main(void)

{

int sockfd, n, connfd

pthread_t tid

struct sockaddr_in servaddr

sockfd = socket(AF_INET, SOCK_STREAM, 0)

if (sockfd == -1)

{

perror("socket:")

exit(1)

}

bzero(&servaddr, sizeof(servaddr))

servaddr.sin_family = AF_INET

servaddr.sin_addr.s_addr = htonl(INADDR_ANY)

servaddr.sin_port = htons(PORT)

n = bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr))

if (n == -1)

{

perror("bind:")

exit(1)

}

n = listen(sockfd, 20)

if (n == -1)

{

perror("listen:")

exit(1)

}

while (1)

{

connfd = accept(sockfd, (struct sockaddr *)&servaddr, NULL)

pthread_create(&tid, NULL, yourfunction, (void *)&connfd)

}

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8902408.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-22
下一篇2023-04-22

发表评论

登录后才能评论

评论列表(0条)

    保存