基于套接字的聊天程序设计 联系客服

发布时间 : 星期六 文章基于套接字的聊天程序设计更新完毕开始阅读b1a7fec80c22590102029db7

进程连接请求

if (sockConn == INVALID_SOCKET) {

cout<<\ break; }

char recvBuf[1024] = \

iLen = recv(sockConn,recvBuf,1024,0);//接收数据 if (iLen == SOCKET_ERROR) {

cout<<\ break; }

recvBuf[iLen] = '\\0'; cout<

char sendBuf[1024],hostname[100];

if (gethostname(hostname,100) != 0) //获取主机名称 strcpy(hostname,\ sprintf(sendBuf,\%s to %s!\

err = send(sockConn,sendBuf,strlen(sendBuf)+1,0); //发送数据 if (err == SOCKET_ERROR) {

cout<<\ break; }

while(1 ) {

char recvBuf[1024] = \

iLen = recv(sockConn,recvBuf,1024,0);//接收数据 if (iLen == SOCKET_ERROR) {

cout<<\ break; }

recvBuf[iLen] = '\\0'; cout<

- 8 - / 39

connected cout<<\请输入你要发送的消息,输入E退出\ char sendBuf[1024]; cin>>sendBuf;

string str=sendBuf; if(str.compare(\ {

err = send(sockConn,sendBuf,strlen(sendBuf)+1,0); //发送数据 if (err == SOCKET_ERROR) {

cout<<\ break; } } else {

break; } }

closesocket(sockConn); //关闭套接字 cout<<\ }

WSACleanup(); return 0; }

3.1.2 客户端设计:

#include #include using namespace std; #include

int main(int argc, char *argv[]) {

const int DEFAULT_PORT = 5000; WORD wVersionRequested; WSADATA wsaData; int err,iLen;

wVersionRequested=MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) {

cout<<\加载WinSock失败!\ return 0;

- 9 - / 39

}

//创建用于连接的套接字

SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0); if (sockClient == INVALID_SOCKET) {

cout<<\ return 0; }

SOCKADDR_IN addrSrv; //string ip; char cip[20]=\ int port; char type;

cout <<\服务器基本设置为 ip:127.0.0.1 端口:5000\ cout <<\是否从新设置:Y or N\ cin>>type; if(type=='Y') {

cout<<\ cin>>cip; //ip=cip;

cout<<\端口:\ cin>>port;

addrSrv.sin_family = AF_INET;

addrSrv.sin_addr.S_un.S_addr = inet_addr(cip); addrSrv.sin_port = htons(port); } else {

addrSrv.sin_family = AF_INET;

addrSrv.sin_addr.S_un.S_addr = inet_addr(\ addrSrv.sin_port = htons(DEFAULT_PORT); }

err = connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//请求连接服务器进程

if ( err == INVALID_SOCKET ) {

cout<<\ return 0; }

- 10 - / 39

char sendBuf[1024],hostname[100];

if (gethostname(hostname,100) != 0) //获取主机名称 strcpy(hostname,\strcpy(sendBuf,hostname);

strcat(sendBuf,\

err = send(sockClient,sendBuf,strlen(sendBuf)+1,0); //发送数据 if (err == SOCKET_ERROR) {

cout<<\ return 0; }

char recvBuf[1024];

iLen = recv(sockClient,recvBuf,1024,0); //接收数据 if (iLen == 0) return 0;

else if (iLen == SOCKET_ERROR) {

cout<<\ return 0; } else {

recvBuf[iLen] = '\\0'; cout<

while(1) {

char sendBuf[1024];

cout<<\请输入你要发送的消息,输入E退出\ cin>>sendBuf;

string str=sendBuf; if(str.compare(\ {

err = send(sockClient,sendBuf,strlen(sendBuf)+1,0); //发送数据 if (err == SOCKET_ERROR) {

cout<<\ return 0; } }

- 11 - / 39