資源簡介
基于TCP的簡單一對一聊天程序設計

代碼片段和文件信息
#include?“Client.h“
//Global?Message?object
#pragma?comment(lib“wsock32.lib“)?
CIPMessage?MyMessObj;
CIPMessage::CIPMessage()//MyMessObj構造函數
{
m_bIsConnected?=?false;
}
void?CIPMessage::Init(string?sIpAddress?int?iPort)//建立與服務器端得連接
{
m_sServerIPAddress?=?sIpAddress;
m_iServerPort?=?iPort;
struct?hostent?*hp;
unsigned?int?addr;
struct?sockaddr_in?server;
WSADATA?wsaData;
int?wsaret=WSAStartup(0x101&wsaData);//應用程序調用的第一個Windows?Sockets函數.
//它允許應用程序或DLL指明Windows?Sockets?API的版本號及獲得特定Windows?Sockets實現的細節.
if(wsaret!=0)
{
return;
}
conn=socket(AF_INETSOCK_STREAM0);//建立客戶端套接字
if(conn==INVALID_SOCKET)
return;
addr=inet_addr(m_sServerIPAddress.c_str());//轉化ip地址和端口為指定形式
hp=gethostbyaddr((char*)&addrsizeof(addr)AF_INET);
if(hp==NULL)
{
closesocket(conn);
return;
}
server.sin_addr.s_addr=*((unsigned?long*)hp->h_addr);
server.sin_family=AF_INET;
server.sin_port=htons(m_iServerPort);
if(connect(conn(struct?sockaddr*)&serversizeof(server)))//向指定服務器建立連接
{
closesocket(conn);
return;
}
m_bIsConnected?=?true;
return;
}
CIPMessage::~CIPMessage()//MyMessObj析構函數
{
if(m_bIsConnected)
closesocket(conn);
}
int?CIPMessage::SendMessagePort(string?sMessage)//向指定服務器發出數據
{
int?iStat?=?0;
iStat?=?send(connsMessage.c_str()sMessage.size()+10);
if(iStat?==?-1)
return?1;
return?0;
}
int?CIPMessage::RecMessagePort()//接收指定服務器數據
{
char?acRetData[4096];
int?iStat?=?0;
iStat?=?recv(connacRetData40960);
if(iStat?==?-1)
return?1;
cout<<“-->:“< return?0;
}
UINT??MessageRecThread(LPVOID?pParam)//接收指定服務器數據線程
{
while(1)
{
if(MyMessObj.RecMessagePort())
break;
}
return?0;
}
int?main(int?argc?char*?argv[])
{
char?buf[4096];
cout<<“This?is?a?client?TCP/IP?application\nConnecting?to?port?8084\n“;
cout<<“\nPress?ONLY?ENTER?to?quit“;
cout<<“\n===============================================\n“;
FILE?*fp?=?fopen(“server.ini““r“);//獲取服務器端套接字地址
if(fp?==?NULL)
{
cout<<“\nUnable?to?open?server.ini.?Please?specify?server?IPsddress?in?server.ini“;
return?1;?//?main?failed
}
string?sServerAddress;
while((fgets(buf4096fp))?!=?NULL)
{
if(buf[0]?==?‘#‘)
continue;
sServerAddress?=?buf;
}
fclose(fp);
if(sServerAddress.size()?==?0)
{
cout<<“\nUnable?to?find?server?IPaddress?in?server.ini“;
cout<<“\nPlease?set?server?IPaddress“;
cout<<“\nBYEBYE:“;
getch();
return?0;
}
MyMessObj.Init(sServerAddress.c_str()8084);//啟動與服務器連接
if(!MyMessObj.IsConnected())
{
cout<<“\nUnable?to?connect?to?the?IPaddress?specified?in?server.ini“;
cout<<“\nPlease?check?server?IPaddress“;
cout<<“\nReady?to?see?goodbye:“;
getch();
return?0;
}
AfxBeginThread(MessageRecThread0);//開啟接收數據線程
while(gets(buf))
{
if(strlen(buf)?==?0)
break;
if(MyMessObj.SendMessagePort(buf))//向服務器發送數據
{
cout<<“Problem?in?connecting?to?server.?Check?whether?server?is?run
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3242??2014-07-06?01:09??TCP\Client\Client.cpp
?????文件???????3265??2014-07-08?00:39??TCP\Client\Client.dsp
?????文件????????518??2014-07-08?00:39??TCP\Client\Client.dsw
?????文件????????517??2014-07-06?00:51??TCP\Client\Client.h
?????文件??????41984??2014-07-08?00:39??TCP\Client\Client.ncb
?????文件??????48640??2014-07-08?00:39??TCP\Client\Client.opt
?????文件????????464??2014-07-08?00:38??TCP\Client\Client.plg
?????文件????1429551??2014-07-08?00:38??TCP\Client\Debug\Client.exe
?????文件????1907872??2014-07-08?00:38??TCP\Client\Debug\Client.ilk
?????文件??????78489??2014-07-08?00:38??TCP\Client\Debug\Client.obj
?????文件????4920964??2014-07-08?00:38??TCP\Client\Debug\Client.pch
?????文件????2614272??2014-07-08?00:38??TCP\Client\Debug\Client.pdb
?????文件?????279552??2014-07-08?00:38??TCP\Client\Debug\vc60.idb
?????文件?????110592??2014-07-08?00:38??TCP\Client\Debug\vc60.pdb
?????文件?????????11??2014-07-06?01:04??TCP\Client\server.ini
?????文件????1425455??2014-07-08?00:38??TCP\Server\Debug\Server.exe
?????文件????1905840??2014-07-08?00:38??TCP\Server\Debug\Server.ilk
?????文件??????91479??2014-07-08?00:38??TCP\Server\Debug\Server.obj
?????文件????5373704??2014-07-08?00:38??TCP\Server\Debug\Server.pch
?????文件????2597888??2014-07-08?00:38??TCP\Server\Debug\Server.pdb
?????文件?????295936??2014-07-08?00:38??TCP\Server\Debug\vc60.idb
?????文件?????118784??2014-07-08?00:38??TCP\Server\Debug\vc60.pdb
?????文件???????3545??2014-07-06?01:08??TCP\Server\Server.cpp
?????文件???????3265??2014-07-08?00:39??TCP\Server\Server.dsp
?????文件????????518??2014-07-08?00:39??TCP\Server\Server.dsw
?????文件????????682??2014-07-06?00:49??TCP\Server\Server.h
?????文件?????????11??2014-07-06?01:04??TCP\Server\server.ini
?????文件??????50176??2014-07-08?00:39??TCP\Server\Server.ncb
?????文件??????48640??2014-07-08?00:39??TCP\Server\Server.opt
?????文件????????841??2014-07-08?00:38??TCP\Server\Server.plg
............此處省略9個文件信息
評論
共有 條評論