【发布时间】:2015-07-09 01:21:16
【问题描述】:
我想做一个聊天系统。它应该写你:然后你输入的任何内容,每当你从其他用户那里收到文本时,只需删除你:输入用户:消息和你:再次。
服务器:
std::cin.ignore();
std::thread t1(readData,&acceptedSocket);
do{
memset(buffer,0,sizeof(buffer));
std::cout << "You: ";
std::cin.getline(buffer,255);
n = send(acceptedSocket,buffer,strlen(buffer),0);
}while(n > 0);
客户:
std::cin.ignore();
std::thread t1(readData,&connectingSocket);
do{
memset(buffer,0,sizeof(buffer));
std::cout << "You: ";
std::cin.getline(buffer,255);
n = send(connectingSocket,buffer,strlen(buffer),0);
}while(n > 0);
读取数据:
void readData(int *socketPointer){
int connectingSocket = *socketPointer;
char buffer[256];
memset(buffer,0,sizeof(buffer));
while(recv(connectingSocket,buffer,255,0)){
std::cout << "\b\b\b\b\bUSER:" << buffer << std::endl << "You: ";
memset(buffer,0,sizeof(buffer));
}
}
输出:
服务器:
USER:Hello
USER:How are u doing
Hi
You: You: I am fine
USER:gg
wp
You: You:
客户:
You: Hello
You: How are u doing
USER:Hi
USER:I am fine
gg
You: USER:wp
想要的服务器输出:
USER:Hello
USER:How are u doing
You: Hi
You: I am fine
USER:gg
You: wp
You:
想要的客户端输出:
You: Hello
You: How are u doing
USER:Hi
USER:I am fine
You: gg
USER:wp
You:
其他线程有cin换行时好像不能换行,谢谢!
【问题讨论】:
-
c++
iostreams 仅用于简单的输入/输出操作。如果您想对输出进行更复杂的操作,您应该考虑使用像 ncurses 这样的库。
标签: c++ multithreading sockets output cout