谁给个最简单的 socket的 sample,快! VC6是console下的同步通讯就可以不要是msdn(碟)里的,我没有;网上能DOWN的也可以,E文也行C/S 可以在一台机器上运行 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.vcroad.com/shownews.asp?newsid=879 同一台机上怎么测试?Server用了888端口,Client用什么端口?为什么不要多于80字节? //client#include <winsock2.h>#include <winbase.h>#include <iostream>#define PORT 5000void main(void){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(2, 2); err = WSAStartup(wVersionRequested, &wsaData); if(err != 0) { return; } if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { WSACleanup(); return; } /* //get local ip address char name[32]; int rtnvl_gethostname; rtnvl_gethostname = gethostname(name, sizeof(name)); if(rtnvl_gethostname == SOCKET_ERROR) { std::cout<<"get host name fail !"<<std::endl; } struct hostent FAR * hostent; hostent = gethostbyname(name); printf("ip address is %s\n", inet_ntoa(*((struct in_addr *)hostent->h_addr)));*/ SOCKET sock; sock = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in server; server.sin_family = AF_INET; server.sin_port = htons(PORT); server.sin_addr.S_un.S_addr = inet_addr("10.96.128.149"); int rtnvl_connect; rtnvl_connect = connect(sock, (struct sockaddr FAR*)&server, sizeof(struct sockaddr_in)); if(rtnvl_connect == SOCKET_ERROR) { int erro = WSAGetLastError (); std::cout<<"connect fail !"<<std::endl; Sleep(3000); closesocket(sock); WSACleanup(); return ; } char buffer[1024]; int count; count = recv(sock, buffer, sizeof(buffer), MSG_PEEK); if(count == SOCKET_ERROR) { closesocket(sock); WSACleanup(); return ; } std::cout<<buffer<<std::endl; Sleep(3000); closesocket(sock); WSACleanup(); } //server #include <winsock2.h>#include <winbase.h>#include <iostream>#include <fstream>#define PORT 5000#define MAXLISTEN 5 void main(void){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(2, 2); err = WSAStartup(wVersionRequested, &wsaData); if(err != 0) { return; } if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { WSACleanup(); return; } SOCKET sock; sock = socket(AF_INET, SOCK_STREAM, 0); if(sock == INVALID_SOCKET) { std::cout<<"socket fail !"<<std::endl; Sleep(3000); return ; } struct sockaddr_in localaddr; localaddr.sin_family = AF_INET; localaddr.sin_port = htons(PORT); localaddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); int rtnvl_bind; rtnvl_bind = bind(sock, (struct sockaddr *)&localaddr, sizeof(struct sockaddr_in)); if(rtnvl_bind == SOCKET_ERROR) { std::cout<<"bind fail !"<<std::endl; Sleep(3000); return ; } int rtnvl_listen; rtnvl_listen = listen(sock, MAXLISTEN); if(rtnvl_listen == SOCKET_ERROR) { std::cout<<"listen fail !"<<std::endl; Sleep(3000); return ; } while(true) { SOCKET newsocket; struct sockaddr_in clientaddr; int length; length = sizeof(struct sockaddr_in); newsocket = accept(sock, (struct sockaddr FAR *)&clientaddr, &length); if(newsocket == INVALID_SOCKET) { std::cout<<"accept fail !"<<std::endl; Sleep(3000); int error = WSAGetLastError(); std::cout<<error<<std::endl; Sleep(3000); break ; }//send file char buffer[] ="this is the server !"; int rtnvl_send; rtnvl_send = send(newsocket, buffer, sizeof(buffer), MSG_DONTROUTE); if(rtnvl_send == SOCKET_ERROR) { std::cout<<"send fail !"<<std::endl; Sleep(3000); break ; }// closesocket(newsocket); } closesocket(sock); WSACleanup(); } client 中的ip地址要改为你的本机的ip server.sin_addr.S_un.S_addr = inet_addr("10.96.128.149"); client建立一个console啊直接粘贴进去,编译就可以了啊,然后运行server建立一个console啊直接粘贴进去,编译就可以了啊,然后运行server要先运行 compile出来是.OBJbuild出来是 12个错 分别放到文件中,打开dos窗口,使用cl命令cl -GX c.cpp wsock32.lib-----不知道编译后能否运行 加个库啊哥们,ws2_32.lib真是服了你 有EXE了 :)不过一运行是bind fail ! 菜单哪里加 ws2_32.lib?ws2_32.lib在哪个目录下?你当我什么都不会 来教 //server#include <winsock2.h>#include <winbase.h>#include <iostream>#include <fstream>#pragma comment(lib, "ws2_32.lib")#define PORT 5000#define MAXLISTEN 5 void main(void){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(2, 2); err = WSAStartup(wVersionRequested, &wsaData); if(err != 0) { return; } if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { WSACleanup(); return; } SOCKET sock; sock = socket(AF_INET, SOCK_STREAM, 0); if(sock == INVALID_SOCKET) { std::cout<<"socket fail !"<<std::endl; Sleep(3000); return ; } struct sockaddr_in localaddr; localaddr.sin_family = AF_INET; localaddr.sin_port = htons(PORT); localaddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); int rtnvl_bind; rtnvl_bind = bind(sock, (struct sockaddr *)&localaddr, sizeof(struct sockaddr_in)); if(rtnvl_bind == SOCKET_ERROR) { std::cout<<"bind fail !"<<std::endl; Sleep(3000); return ; } int rtnvl_listen; rtnvl_listen = listen(sock, MAXLISTEN); if(rtnvl_listen == SOCKET_ERROR) { std::cout<<"listen fail !"<<std::endl; Sleep(3000); return ; } while(true) { SOCKET newsocket; struct sockaddr_in clientaddr; int length; length = sizeof(struct sockaddr_in); newsocket = accept(sock, (struct sockaddr FAR *)&clientaddr, &length); if(newsocket == INVALID_SOCKET) { std::cout<<"accept fail !"<<std::endl; Sleep(3000); int error = WSAGetLastError(); std::cout<<error<<std::endl; Sleep(3000); break ; }//send file char buffer[] ="this is the server !"; int rtnvl_send; rtnvl_send = send(newsocket, buffer, sizeof(buffer), MSG_DONTROUTE); if(rtnvl_send == SOCKET_ERROR) { std::cout<<"send fail !"<<std::endl; Sleep(3000); break ; }// closesocket(newsocket); } closesocket(sock); WSACleanup(); }//client#include <winsock2.h>#include <winbase.h>#include <iostream>#pragma comment(lib, "ws2_32.lib")#define PORT 5000void main(void){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(2, 2); err = WSAStartup(wVersionRequested, &wsaData); if(err != 0) { return; } if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { WSACleanup(); return; } /* //get local ip address char name[32]; int rtnvl_gethostname; rtnvl_gethostname = gethostname(name, sizeof(name)); if(rtnvl_gethostname == SOCKET_ERROR) { std::cout<<"get host name fail !"<<std::endl; } struct hostent FAR * hostent; hostent = gethostbyname(name); printf("ip address is %s\n", inet_ntoa(*((struct in_addr *)hostent->h_addr)));*/ SOCKET sock; sock = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in server; server.sin_family = AF_INET; server.sin_port = htons(PORT); server.sin_addr.S_un.S_addr = inet_addr("10.96.128.149"); int rtnvl_connect; rtnvl_connect = connect(sock, (struct sockaddr FAR*)&server, sizeof(struct sockaddr_in)); if(rtnvl_connect == SOCKET_ERROR) { int erro = WSAGetLastError (); std::cout<<"connect fail !"<<std::endl; Sleep(3000); closesocket(sock); WSACleanup(); return ; } char buffer[1024]; int count; count = recv(sock, buffer, sizeof(buffer), MSG_PEEK); if(count == SOCKET_ERROR) { closesocket(sock); WSACleanup(); return ; } std::cout<<buffer<<std::endl; Sleep(3000); closesocket(sock); WSACleanup(); } 不用加库了,直接build程序运行 大静态数字清空问题 windows api 的详细分类 VC中从.txt文件读数据到链表,然后绘图出现的问题 如何实现对无边框的对话框进行流畅的拖动 VC Datagrid插件 用CMSComm串口类,在dlg里添加OnComm(),如何在此函数里只处理一次事件?? 反汇编后的堆栈空间疑问! 如何获得创建模式对话框的视图的指针? SQL语句中的中文问题 请问FLASH控件编程? 在isapi中,我该如何得到dll的物理路径? 100分寻求下载网址!
Server用了888端口,Client用什么端口?为什么不要多于80字节?
#include <winbase.h>
#include <iostream>#define PORT 5000void main(void)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
if(err != 0)
{
return;
}
if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
{
WSACleanup();
return;
}
/*
//get local ip address
char name[32];
int rtnvl_gethostname;
rtnvl_gethostname = gethostname(name, sizeof(name));
if(rtnvl_gethostname == SOCKET_ERROR)
{
std::cout<<"get host name fail !"<<std::endl;
} struct hostent FAR * hostent;
hostent = gethostbyname(name);
printf("ip address is %s\n", inet_ntoa(*((struct in_addr *)hostent->h_addr)));
*/ SOCKET sock;
sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.S_un.S_addr = inet_addr("10.96.128.149"); int rtnvl_connect;
rtnvl_connect = connect(sock, (struct sockaddr FAR*)&server, sizeof(struct sockaddr_in));
if(rtnvl_connect == SOCKET_ERROR)
{
int erro = WSAGetLastError (); std::cout<<"connect fail !"<<std::endl;
Sleep(3000); closesocket(sock);
WSACleanup();
return ;
}
char buffer[1024]; int count;
count = recv(sock, buffer, sizeof(buffer), MSG_PEEK);
if(count == SOCKET_ERROR)
{
closesocket(sock);
WSACleanup();
return ;
} std::cout<<buffer<<std::endl;
Sleep(3000); closesocket(sock);
WSACleanup();
}
#include <winbase.h>
#include <iostream>
#include <fstream>#define PORT 5000
#define MAXLISTEN 5 void main(void)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
if(err != 0)
{
return;
}
if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
{
WSACleanup();
return;
}
SOCKET sock; sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock == INVALID_SOCKET)
{
std::cout<<"socket fail !"<<std::endl;
Sleep(3000);
return ;
} struct sockaddr_in localaddr;
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(PORT);
localaddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
int rtnvl_bind;
rtnvl_bind = bind(sock, (struct sockaddr *)&localaddr, sizeof(struct sockaddr_in));
if(rtnvl_bind == SOCKET_ERROR)
{
std::cout<<"bind fail !"<<std::endl;
Sleep(3000);
return ;
} int rtnvl_listen; rtnvl_listen = listen(sock, MAXLISTEN);
if(rtnvl_listen == SOCKET_ERROR)
{
std::cout<<"listen fail !"<<std::endl;
Sleep(3000);
return ;
} while(true)
{
SOCKET newsocket;
struct sockaddr_in clientaddr; int length; length = sizeof(struct sockaddr_in);
newsocket = accept(sock, (struct sockaddr FAR *)&clientaddr, &length);
if(newsocket == INVALID_SOCKET)
{
std::cout<<"accept fail !"<<std::endl;
Sleep(3000); int error = WSAGetLastError(); std::cout<<error<<std::endl; Sleep(3000); break ;
}//send file char buffer[] ="this is the server !";
int rtnvl_send;
rtnvl_send = send(newsocket, buffer, sizeof(buffer), MSG_DONTROUTE); if(rtnvl_send == SOCKET_ERROR)
{
std::cout<<"send fail !"<<std::endl;
Sleep(3000);
break ;
}
//
closesocket(newsocket);
} closesocket(sock);
WSACleanup();
}
build出来是 12个错
cl -GX c.cpp wsock32.lib-----不知道编译后能否运行
不过一运行是
bind fail !
ws2_32.lib在哪个目录下?你当我什么都不会 来教
#include <winbase.h>
#include <iostream>
#include <fstream>#pragma comment(lib, "ws2_32.lib")#define PORT 5000
#define MAXLISTEN 5 void main(void)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
if(err != 0)
{
return;
}
if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
{
WSACleanup();
return;
}
SOCKET sock; sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock == INVALID_SOCKET)
{
std::cout<<"socket fail !"<<std::endl;
Sleep(3000);
return ;
} struct sockaddr_in localaddr;
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(PORT);
localaddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
int rtnvl_bind;
rtnvl_bind = bind(sock, (struct sockaddr *)&localaddr, sizeof(struct sockaddr_in));
if(rtnvl_bind == SOCKET_ERROR)
{
std::cout<<"bind fail !"<<std::endl;
Sleep(3000);
return ;
} int rtnvl_listen; rtnvl_listen = listen(sock, MAXLISTEN);
if(rtnvl_listen == SOCKET_ERROR)
{
std::cout<<"listen fail !"<<std::endl;
Sleep(3000);
return ;
} while(true)
{
SOCKET newsocket;
struct sockaddr_in clientaddr; int length; length = sizeof(struct sockaddr_in);
newsocket = accept(sock, (struct sockaddr FAR *)&clientaddr, &length);
if(newsocket == INVALID_SOCKET)
{
std::cout<<"accept fail !"<<std::endl;
Sleep(3000); int error = WSAGetLastError(); std::cout<<error<<std::endl; Sleep(3000); break ;
}//send file char buffer[] ="this is the server !";
int rtnvl_send;
rtnvl_send = send(newsocket, buffer, sizeof(buffer), MSG_DONTROUTE); if(rtnvl_send == SOCKET_ERROR)
{
std::cout<<"send fail !"<<std::endl;
Sleep(3000);
break ;
}
//
closesocket(newsocket);
} closesocket(sock);
WSACleanup();
}//client#include <winsock2.h>
#include <winbase.h>
#include <iostream>#pragma comment(lib, "ws2_32.lib")#define PORT 5000void main(void)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
if(err != 0)
{
return;
}
if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
{
WSACleanup();
return;
}
/*
//get local ip address
char name[32];
int rtnvl_gethostname;
rtnvl_gethostname = gethostname(name, sizeof(name));
if(rtnvl_gethostname == SOCKET_ERROR)
{
std::cout<<"get host name fail !"<<std::endl;
} struct hostent FAR * hostent;
hostent = gethostbyname(name);
printf("ip address is %s\n", inet_ntoa(*((struct in_addr *)hostent->h_addr)));
*/ SOCKET sock;
sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.S_un.S_addr = inet_addr("10.96.128.149"); int rtnvl_connect;
rtnvl_connect = connect(sock, (struct sockaddr FAR*)&server, sizeof(struct sockaddr_in));
if(rtnvl_connect == SOCKET_ERROR)
{
int erro = WSAGetLastError (); std::cout<<"connect fail !"<<std::endl;
Sleep(3000); closesocket(sock);
WSACleanup();
return ;
}
char buffer[1024]; int count;
count = recv(sock, buffer, sizeof(buffer), MSG_PEEK);
if(count == SOCKET_ERROR)
{
closesocket(sock);
WSACleanup();
return ;
} std::cout<<buffer<<std::endl;
Sleep(3000); closesocket(sock);
WSACleanup();
}