没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
目录
1、得到本机 IP 和主机名.................................................................................................. 2
<1>得到本地主机名................................................................................................... 2
<2>主机名和 IP 地址.................................................................................................. 3
2、设置某个按钮不可用: ............................................................................................... 4
3、控制台下 socket 通信................................................................................................... 4
<1>、服务器端.......................................................................................................... 4
<2>、客户端端.......................................................................................................... 6
4、MFC 下 TCP 编程(只能服务器发,客户端收)................................................................. 7
<1>、服务器端.......................................................................................................... 8
<2>、客户端 ........................................................................................................... 10
5、MFC 下 TCP 编程(可以互发) ....................................................................................... 11
<1>服务器端 ........................................................................................................... 12
1、在*Dlg*.h 中添加: ..................................................................................... 12
2、在 protected:下添加..................................................................................... 12
3、在 Dlg.cpp 中添加内容................................................................................. 12
4、添加自定义消息响应函数............................................................................ 13
5、添加变量 .................................................................................................... 14
6、启动服务器按钮对应的响应函数内容为: ................................................... 14
7、关闭服务器按钮对应的消息响应函数内容为: ............................................ 15
8、发送按钮对应的消息响应函数内容为:....................................................... 16
<2>、客户端 ........................................................................................................... 17
1、在*Dlg*.h 中添加: ..................................................................................... 17
2、在 protected:下添加..................................................................................... 18
3、在 Dlg.cpp 中添加内容................................................................................. 18
4、添加自定义消息响应函数............................................................................ 18
文档:wln Email--- jlu.wln@163.com
very glad you read my document,hope it can help you ,my friend!
1、得到本机 IP 和主机名
首先添加 ws2_32.lib 库文件;再添加头文件 #include<winsock2.h>
程序:
UpdateData(true);
char hostname[128] = "";
WSADATA wsaData;
CString ip;
WSAStartup(MAKEWORD(2, 2), &wsaData);
gethostname(hostname, sizeof(hostname));
//printf("%s", hostname);
SetDlgItemText(IDC_STATIC1,hostname);//name里是本机名
hostent* host = gethostbyname(hostname);
sockaddr_in addre;
for (int i = 0;host->h_addr_list[i];i++)
{
CString ip;
memcpy(&addre.sin_addr.s_addr,host->h_addr_list[0],host->h_length);
ip = inet_ntoa(addre.sin_addr);
SetDlgItemText(IDC_STATIC2,ip);
}
WSACleanup();
UpdateData(false);
<1>得到本地主机名
#include<stdio.h>
#include<Winsock2.h>
#pragma comment(lib, "Ws2_32.lib")
int main()
{
char hostname [128] = "";
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
gethostname(hostname, sizeof(hostname));
printf("%s", hostname);
WSACleanup();
return 0;
}
<2>主机名和 IP 地址
//连接 ws2_32.lib
WORD wVersionRequested;
WSADATA wsaData;
char name[255];
CString ip;
int err;
PHOSTENT hostinfo;
wVersionRequested = MAKEWORD( 2, 2 );//版本号 2.2
//1.加载套接字库
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
//判断是否我们请求的 winsocket 版本,如果不是
//则调用 WSACleanup 终止 winsocket 的使用并返回
if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup( );
return;
}///...if
if ( err == 0 )
{
if( gethostname ( name, sizeof(name)) == 0)
{
if((hostinfo = gethostbyname(name)) != NULL)
{
ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
}
}
}
WSACleanup( );
SetDlgItemText(IDC_STATIC1,name);//name里是本机名
SetDlgItemText(IDC_STATIC2,ip); //ip 中是本机 IP
UpdateData(false);
2、设置某个按钮不可用:
m_StartBtn.EnableWindow(TRUE); //可用
m_StopBtn.EnableWindow(FALSE); //不可用
3、控制台下 socket 通信
首先添加 ws2_32.lib 库文件;再添加头文件 #include<winsock2.h>
<1>、服务器端
// TCPConsolSer2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h>
int main(int argc, char* argv[])
{
WORD wVersionRequested;//版本号
wVersionRequested = MAKEWORD(1, 1);//1.1 版本的套接字
SOCKET sersock,clisock;
struct sockaddr_in seraddr,cliaddr;
int serport=5556;
char buf[256];
WSADATA wsaData;
int len,err;
//初始化 Winsock
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0)
{
printf("加载套接字库失败!\n");
return -1;
}
if (LOBYTE(wsaData.wVersion) != 1 ||
HIBYTE(wsaData.wVersion) != 1)
return -1;
{
}//判断高低字节是不是 1,如果不是 1.1 的版本则退出
//创建套接字
printf("创建套接字.\n");
sersock = socket(AF_INET, SOCK_STREAM, 0);
//Socket 地址结构体的创建
memset(&seraddr,0,sizeof(seraddr));
seraddr.sin_family=AF_INET;
seraddr.sin_port=htons(serport);
//seraddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY); //等价于
seraddr.S_un.sin_addr=inet_addr("127.0.0.1");
seraddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
//绑定套接字到服务器地址结构
printf("Binding...\n");
err=bind(sersock, (SOCKADDR*)&seraddr, sizeof(SOCKADDR));
if(err!=0)
{
printf("listen failed:%d\n",WSAGetLastError());
exit(-3);
}
//监听套接字
printf("listening...\n");
err=listen(sersock,5);
if(err!=0)
{
printf("listen failed:%d\n",WSAGetLastError());
exit(-2);
}
//等待连接请求
printf("waitting request....\n");
len = sizeof(cliaddr);//初始化参数,这个参数必须进行初始化
clisock=accept(sersock,(SOCKADDR*)&cliaddr, &len);
printf("Accept client: %s: port: %d\n",inet_ntoa(cliaddr.sin_addr),ntohs
(cliaddr.sin_port));
sprintf(buf,"welcome %s",inet_ntoa(cliaddr.sin_addr));
send(clisock,buf,strlen(buf),0);
//关闭连接
closesocket(clisock);
closesocket(sersock);
剩余20页未读,继续阅读
资源评论
xxpr_ybgg
- 粉丝: 6498
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功