int clk=0;
int a=1;
char recvBuf[100];
char sendBuf[100];
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
void HDlg::OnBnClickedhaoyou()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1,1);
err = WSAStartup(wVersionRequested,&wsaData);
if(err!=0){
return;}
if(LOBYTE(wsaData.wVersion)!=1||
HIBYTE(wsaData.wVersion)!=1){
WSACleanup();
return;}
SOCKADDR_IN addrsrv;
addrsrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrsrv.sin_family=AF_INET;
addrsrv.sin_port=htons(8888);
connect(sockClient,(SOCKADDR*)&addrsrv,sizeof(SOCKADDR)); //以上部分创建套接字建立连接等工作*/
// SetTimer(1,500,NULL);
// OnTimer(a);
recv(sockClient,recvBuf,100,0);
MessageBox(recvBuf);
}
void HDlg::OnBnClickedFasong()
{
clk=1; // TODO: 在此添加控件通知处理程序代码
}
void HDlg::OnTimer(UINT_PTR nIDEvent)
{
recv(sockClient,recvBuf,100,0);
MessageBox(recvBuf);
if(recvBuf[0]!='\0')
{temp.Format("%s",recvBuf);
m_xianshi=m_xianshi+"对方说:\r\n";
m_xianshi=m_xianshi+temp; UpdateData(false);}
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(clk==1) //发送模块
{
clk=0;
UpdateData(true);
char *sendBuf=m_input.GetBuffer(0);
send(sockClient,sendBuf,strlen(sendBuf)+1,0);
temp.Format("%s",sendBuf);
m_xianshi=m_xianshi+"你说:\r\n";
m_xianshi=m_xianshi+temp+"\r\n";
m_input="";
UpdateData(false);}
CDialogEx::OnTimer(nIDEvent);
}
分割线------------------------------------------------------------------------------------------下面是服务端的代码
int clk=0;
int a=1;
char recvBuf[100];
char sendBuf[100];
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
void HDlg::OnBnClickedhaoyou()
{
m_IP.GetWindowTextA(m_str);
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1,1);
err = WSAStartup(wVersionRequested,&wsaData);
if(err!=0){
MessageBox("获取版本信息失败!");
return;}
if(LOBYTE(wsaData.wVersion)!=1||
HIBYTE(wsaData.wVersion)!=1){
WSACleanup();
return;}
SOCKADDR_IN addrsrv;
addrsrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); //监听对象是所有的IP
addrsrv.sin_family=AF_INET;
addrsrv.sin_port=htons(8888);
bind(sockSrv,(SOCKADDR*)&addrsrv,sizeof(SOCKADDR));
listen(sockSrv,5);
//以上部分创建套接字建立连接等工作*/
SetTimer(1,500,NULL);
OnTimer(a);
}
void HDlg::OnBnClickedFasong()
{
clk=1; // TODO: 在此添加控件通知处理程序代码
}
void HDlg::OnTimer(UINT_PTR nIDEvent)
{
SOCKET sockconn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
sprintf(sendBuf,"wlecome!",inet_ntoa(addrClient.sin_addr));
send(sockconn,sendBuf,strlen(sendBuf)+1,0);
MessageBox(sendBuf);
recv(sockconn,recvBuf,100,0);
if('q'==recvBuf[0])
{
sendto(sockSrv,"q",strlen("1")+1,0,(SOCKADDR*)&addrClient,len);
closesocket(sockSrv);
WSACleanup();
}
if(recvBuf[0]!='\0')
{temp.Format("%s",recvBuf);
MessageBox(recvBuf);
m_xianshi=m_xianshi+"对方说:\r\n";
m_xianshi=m_xianshi+temp; UpdateData(false);}
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(clk==1) //发送模块
{
clk=0;
UpdateData(true);
char *sendBuf=m_input.GetBuffer(0);
send(sockconn,sendBuf,strlen(sendBuf)+1,0);
temp.Format("%s",sendBuf);
m_xianshi=m_xianshi+"你说:\r\n";
m_xianshi=m_xianshi+temp+"\r\n";
m_input="";
UpdateData(false);}
CDialogEx::OnTimer(nIDEvent);
}
我就是想实现类似QQ那样的聊天过程 之前写过类似的控制台的小程序 可以运行 但是这次这个一直没搞懂哪儿有问题 程序没有报错 但是双方的数据什么的都没有发送成功 实在找不出啥状况了 求助各位大神指点指点 其中出现的MESSAGEBOX是用来测试的不用在意