Today on the Internet found a console chat program instance, feel good, slightly make some changes for the collection.
Server-Side program code:
view Plaincopy to Clipboardprint?
//2009-06-28
#pragma comment (lib, "Ws2_32.lib")
#include
#include
#include
using namespace std;
string strcurmsg= "";
void Recvproc (SOCKET sockconnect)
{
Char msgrcv[100]={0};
while (true)
{
if (Socket_error==recv (sockconnect,msgrcv,sizeof (MSGRCV), 0))
{
cout<< "\nhe is leaving";
return;
}
if (msgrcv[0]!= ')
{
strcurmsg.erase (Strcurmsg.end () -7,strcurmsg.end ());
strcurmsg+= "he said:";
STRCURMSG+=MSGRCV;
strcurmsg+= ' \ n ';
strcurmsg+= "Input:";
System ("CLS");
cout<
}
}
}
int main (int argc, char* argv[])
{
WORD wversionrequested;
Wsadata Wsadata;
int err;
wversionrequested = Makeword (1, 1);
err = WSAStartup (wversionrequested, &wsadata);
if (Err!= 0) {
return 1;
}
if (Lobyte (wsadata.wversion)!= 1| |
hibyte (wsadata.wversion)!= 1) {
WSACleanup ();
return 1;
}
SOCKET Socksrv=socket (AF_INET,SOCK_STREAM,IPPROTO_TCP);
sockaddr_in addrsrv;
memset (&addrsrv,0,sizeof (addrsrv));
addrsrv.sin_addr. S_un. S_addr=htonl (Inaddr_any);
addrsrv.sin_family=af_inet;
addrsrv.sin_port=htons (5000);
if (Bind (Socksrv, (sockaddr*) &addrsrv,sizeof (sockaddr)) ==socket_error)
{
cout<< "bind error" <
}
if (Listen (socksrv,5) ==socket_error)
{
cout<< "Listen error" <
}
sockaddr_in addrclient;
int len=sizeof (SOCKADDR);
while (true)
{
cout<< "Waiting ...";
SOCKET sockconnect=accept (Socksrv, (sockaddr*) &addrclient,&len);
if (sockconnect==invalid_socket)
{
cout<< "Invalid socket" <
return 0;
}
Else
{
cout<< "he is coming\n";
}
CreateThread (null,0,
(Lpthread_start_routine) Recvproc, (void*) Sockconnect,
0,null);
while (true)
{
Char buf[100]={0};
strcurmsg+= "Input:";
System ("CLS");
cout<
Cin.getline (buf,100);
strcurmsg.erase (Strcurmsg.end () -7,strcurmsg.end ());
strcurmsg+= "you said:";
Strcurmsg+=buf;
strcurmsg+= ' \ n ';
Send (Sockconnect,buf,sizeof (BUF), 0);
}
closesocket (Sockconnect);
}
WSACleanup ();
return 0;
}
//2009-06-28
#pragma comment (lib, "Ws2_32.lib")
#include
#include
#include
using namespace std;
string strcurmsg= "";
void Recvproc (SOCKET sockconnect)
{
Char msgrcv[100]={0};
while (true)
{
if (Socket_error==recv (sockconnect,msgrcv,sizeof (MSGRCV), 0))
{
cout<< "\nhe is leaving";
return;
}
if (msgrcv[0]!= ')
{
strcurmsg.erase (Strcurmsg.end () -7,strcurmsg.end ());
strcurmsg+= "he said:";
STRCURMSG+=MSGRCV;
strcurmsg+= ' \ n ';
strcurmsg+= "Input:";
System ("CLS");
cout<
}
}
}
int main (int argc, char* argv[])
{
WORD wversionrequested;
Wsadata Wsadata;
int err;
wversionrequested = Makeword (1, 1);
err = WSAStartup (wversionrequested, &wsadata);
if (Err!= 0) {
return 1;
}
if (Lobyte (wsadata.wversion)!= 1| |
hibyte (wsadata.wversion)!= 1) {
WSACleanup ();
return 1;
}
SOCKET Socksrv=socket (AF_INET,SOCK_STREAM,IPPROTO_TCP);
sockaddr_in addrsrv;
memset (&addrsrv,0,sizeof (addrsrv));
addrsrv.sin_addr. S_un. S_addr=htonl (Inaddr_any);
addrsrv.sin_family=af_inet;
addrsrv.sin_port=htons (5000);
if (Bind (Socksrv, (sockaddr*) &addrsrv,sizeof (sockaddr)) ==socket_error)
{
cout<< "bind error" <
}
if (Listen (socksrv,5) ==socket_error)
{
cout<< "Listen error" <
}
sockaddr_in addrclient;
int len=sizeof (SOCKADDR);
while (true)
{
cout<< "Waiting ...";
SOCKET sockconnect=accept (Socksrv, (sockaddr*) &addrclient,&len);
if (sockconnect==invalid_socket)
{
cout<< "Invalid socket" <
return 0;
}
Else
{
cout<< "he is coming\n";
}
CreateThread (null,0,
(Lpthread_start_routine) Recvproc, (void*) Sockconnect,
0,null);
while (true)
{
Char buf[100]={0};
strcurmsg+= "Input:";
System ("CLS");
cout<
Cin.getline (buf,100);
strcurmsg.erase (Strcurmsg.end () -7,strcurmsg.end ());
strcurmsg+= "you said:";
Strcurmsg+=buf;
strcurmsg+= ' \ n ';
Send (Sockconnect,buf,sizeof (BUF), 0);
}
closesocket (Sockconnect);
}
WSACleanup ();
return 0;
}