這其實是壹個網絡通信教程裏的例子,不過是我自己改寫的。這是給妳的代碼:
========================
以下是公共代碼:
========================
#ifndef?__CINITSOCK__H__
#定義?__CINITSOCK__H__
#包含?& ltwinsock2.h & gt
#包含?& ltiphlpapi.h & gt
#pragma?評論(?lib,?“ws2_32.lib”?)
#pragma?評論(?lib,?“iphlpapi.lib”?)
班級?奇尼托克
{
公共:
奇尼索克(?int?nMinorVer?=?2,?int?nMajorVer?=?2?)
{
WSADATA?wsData
詞?wVer?=?MAKEWORD(?nMinorVer,?nMajorVer?);
如果(?0?!=?WSAStartup(?不管怎樣?& ampwsData?)?)?退出(?0?);
}
~CInitSock(?)
{
WSACleanup(?);
}
};
#endif
========================
下面是客戶端的代碼?:
=======================
#包含?" CInitSock.h "
#包含?& ltiostream & gt
使用?命名空間?std
辛尼索克?g _ Sock
作廢?主(?)
{
插座?sockClient?=?插座(?AF_INET,?SOCK_STREAM,?IPPROTO_TCP?);
如果(?無效_套接字?==?sockClient?)
返回;
sockaddr_in?sockAddr
sockAddr.sin_family?=?AF _ INET
sockAddr.sin_port?=?htons(?4567?);
sockAddr.sin_addr。S_un。S_addr?=?inet_addr(?"127.0.0.1"?);
如果(?-1?==?連接(?sockClient,?(?sockaddr*?)& ampsockAddr?sizeof(?sockAddr?)?)?)
{
cout?& lt& lt?“連接?失敗"?& lt& lt?endl
返回;
}
而(?真的嗎?)
{
夏爾?szBuf[?MAX_PATH?];
零記憶(?szBuf,?sizeof(?szBuf?)?);
cout?& lt& lt?“妳?說?:?";
cin?& gt& gt?szBuf
如果(?SOCKET_ERROR?==?發送(?sockClient,?szBuf,?MAX_PATH,?0?)?)
{
cout?& lt& lt?“送?失敗"?& lt& lt?endl
返回;
}
int?nRecvLen?=?recv(?sockClient,?szBuf,?MAX_PATH,?0?);
如果(?nRecvLen?& gt?0?)
{
//?szBuf[?nRecvLen?]?=?'\0';
cout?& lt& lt?“服務?說?:?"?& lt& lt?szBuf?& lt& lt?endl?& lt& lt?endl
}
其他
{
cout?& lt& lt?“recv?失敗"?& lt& lt?endl
返回;
}
}
closesocket(?sockClient?);
}
======================
以下是服務器的代碼:
======================
#包含?" CInitSock.h "
#包含?& ltiostream & gt
使用?命名空間?std
辛尼索克?g _ Sock
作廢?主(?)
{
插座?sockClient?=?插座(?AF_INET,?SOCK_STREAM,?IPPROTO_TCP?);
如果(?無效_套接字?==?sockClient?)
返回;
sockaddr_in?sockAddr
sockAddr.sin_family?=?AF _ INET
sockAddr.sin_port?=?htons(?4567?);
sockAddr.sin_addr。S_un。S_addr?=?INADDR _ ANY
綁定(?sockClient,?(?sockaddr*?)& ampsockAddr?sizeof(?sockAddr?)?);
聽著(?sockClient,?SOMAXCONN?);
夏爾?szBuf[?MAX_PATH?];
sockaddr_in?remoteAddr
int?nLen?=?sizeof(?sockaddr_in?);
插座?襪子?=?接受(?sockClient,?(?sockaddr*?)& ampremoteAddr,?& ampnLen?);
而(?真的嗎?)
{
int?nRecvLen?=?recv(?sock?szBuf,?MAX_PATH,?0?);
如果(?nRecvLen?& gt?0?)
{
cout?& lt& lt?“客戶?說?:?"?& lt& lt?szBuf?& lt& lt?endl?& lt& lt?endl
}
零記憶(?szBuf,?sizeof(?szBuf?)?);
cout?& lt& lt?“妳?說?:?";
cin?& gt& gt?szBuf
如果(?SOCKET_ERROR?==?發送(?sock?szBuf,?MAX_PATH,?0?)?)
{
cout?& lt& lt?“送?失敗"?& lt& lt?endl
}
}
closesocket(?襪子?);
closesocket(?sockClient?);
}
希望對樓主有幫助?。