我要做一个应用程序,可以网络互联的那种,我既可以选在作为客户端也可以选择做为服务器,当我作为客户端时候我填入了对方的ip想和他建立连接,如果对方没有打开应用程序或者没有主动设为主机,提示连接失败,你们都用什么方法建立连接啊,然后提示连接成功!具体点啊小弟初学vc!谢谢各位大虾!
解决方案 »
- 如何给一个对话框增加坐标?
- 请教个问题,如果要在对话框中加载一张图片作为背景,又要实现对话框中的各个控件的透明效果 ,应该怎么做?
- 为什么只能点击CListCtrl框中Item第一列?
- 学VS2005用VC++6.0的书可以吗?
- 如何让ie控件浏览到一个post请求的网页
- 请问如何获得硬盘的ID 最好有样例!
- 学习和交流VC的QQ群,欢迎大家加入!群号 4525522
- 请教一个关于MFC APPwizard问题?
- MyICQ-0.8-alpha1(公开源代码)发布了,希望大家多提意见!
- 怎样在chtmlview视图中用navigate2显示本地网页文件?
- 文件输入的问题。
- 显示C程序文档的软件.VC的插件
#include <Winsock2.h>
void main()
{
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;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));listen(sockSrv,5);SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(1)
{
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[50];
sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char recvBuf[50];
recv(sockConn,recvBuf,50,0);
printf("%s\n",recvBuf);
closesocket(sockConn);
}}客户端编程的步骤:1:加载套接字库,创建套接字(WSAStartup()/socket());2:向服务器发出连接请求(connect());3:和服务器端进行通信(send()/recv());4:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。客户端的代码如下:#include <stdio.h>
#include <Winsock2.h>
void main()
{
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;
}
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);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(6000);
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
char recvBuf[50];
recv(sockClient,recvBuf,50,0);
printf("%s\n",recvBuf);
send(sockClient,"hello",strlen("hello")+1,0);closesocket(sockClient);
WSACleanup();
}
pair for the connection:the local IP address, local port, foreign IP address, and foreign port.The foreign IP address and foreign port must be specified by the client in the call to connect.
The two local local values are normally chosen by the kernel as part of the connect function.
推荐UDT,Enet,raknetsourceforge.net被关,udt估计你下载不到了,到enet官网去下吧