#include 之后,为什么仍然不能使用socket函数

gongren 2003-11-10 11:37:23
#include <winsock2.h>
#include <iostream.h>
#include <ws2tcpip.h>
#include "MSTcpIp.h"
#pragma comment(lib, "WS2_32.LIB")
void main()
{
SOCKET tmpSock;
tmpSock=socket(2 , 3 , 0);
if (tmpSock==(SOCKET)(~0))
cout<<"Failed"<<endl;
else
cout<<"OK"<<endl;
}

以上程序编译通过,在调试过程中,CXX0017:Error:symbol "socket" not found
,所以,tmpSock总是FAILED。
请高手帮帮忙吧!
...全文
247 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
spwnihao 2003-11-10
  • 打赏
  • 举报
回复
最好在新建工程的时候选中“winsock”
否则,好像有点麻烦,...
gongren 2003-11-10
  • 打赏
  • 举报
回复
谢谢大家,好象是忘了,初始化了。

#include <winsock2.h>
#include <iostream.h>
#include <windows.h>
#pragma comment(lib, "WS2_32.LIB")

void main()
{
SOCKET tmpSock;
WSADATA tmpData;
WSAStartup( MAKEWORD(2,2), &tmpData );
tmpSock=socket(2 , 3 , 0);
if (tmpSock==(SOCKET)(~0))
cout<<"Failed"<<endl;
else
cout<<"OK"<<endl;
}
arvid_gs 2003-11-10
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <winsock2.h>
#include <stdio.h>

#define RPSS_NUMOFUSERS 0x03
#define RPSS_STARTGAME 0x04
#define RPSS_SCISSOR 0x05
#define RPSS_ROCK 0x06
#define RPSS_PAPER 0x07
#define RPSS_QUIT 0x08

void main ( void )
{
SOCKET s[3];
sockaddr_in me;
sockaddr you[2];
int addr_size = sizeof (sockaddr);
int num_players = 0;

cout << "Rock, Paper, Scissor, Shoot! Advanced Server\n";
cout << "By Stefan Hajnoczi\n\n";
WSADATA w;
int error = WSAStartup (0x0202,&w);
if (error)
{
cout << "Error: You need WinSock 2.2!\n";
return;
}
if (w.wVersion!=0x0202)
{
cout << "Error: Wrong WinSock version!\n";
WSACleanup ();
return;
}

s[0] = socket (AF_INET,SOCK_STREAM,0);
me.sin_family = AF_INET;
me.sin_port = htons (5555);
me.sin_addr.s_addr = htonl (INADDR_ANY);
if (bind(s[0],(LPSOCKADDR)&me,sizeof(me))==SOCKET_ERROR)
{
cout << "Error: Unable to bind socket!\n";
WSACleanup ();
return;
}
if (listen(s[0],1)==SOCKET_ERROR)
{
cout << "Error: Unable to listen!\n";
WSACleanup ();
return;
}
cout << "Listening for connections...\n";
while (num_players<2)
{
s[num_players+1] = accept (s[0],&you[num_players],&addr_size);

if (s[num_players+1]==INVALID_SOCKET)
{
cout << "Error: Unable to accept connection!\n";
WSACleanup ();
return;
}
else
{
cout << "Player joined!\n";
char buffer[2];
sprintf (buffer,"%c%d",RPSS_NUMOFUSERS,num_players+1);
send (s[num_players+1],buffer,2,0);
num_players++;
}
}
cout << "Starting Game!\n";
closesocket (s[0]);
char buffer[2];
sprintf (buffer,"%c%d",RPSS_STARTGAME,0);
error = send (s[1],buffer,2,0);
if ((error==0)||(error==SOCKET_ERROR))
{
cout << "Error: Player 1 quit!\n";
WSACleanup ();
return;
}
error = send (s[2],buffer,2,0);
if ((error==0)||(error==SOCKET_ERROR))
{
cout << "Error: Player 2 quit!\n";
WSACleanup ();
return;
}
char player1 = 0;
char player2 = 0;
while (true)
{
int error = recv (s[1],buffer,2,0);
if ((error==0)||(error==INVALID_SOCKET))
{
cout << "Error: Player 1 quit!\n";
closesocket (s[2]);
WSACleanup ();
return;
}
if ((buffer[0]==RPSS_ROCK)||(buffer[0]==RPSS_SCISSOR)||(buffer[0]==RPSS_PAPER))
{
player1 = buffer[0];
}
if (buffer[0]==RPSS_QUIT)
{
sprintf (buffer,"%c%d",RPSS_QUIT,0);
send (s[2],buffer,2,0);
closesocket (s[1]);
closesocket (s[2]);
WSACleanup ();
cout << "Player 1 quit\n";
return;
}

error = recv (s[2],buffer,2,0);
if ((error==0)||(error==INVALID_SOCKET))
{
cout << "Error: Player 2 quit!\n";
closesocket (s[1]);
WSACleanup ();
return;
}
if ((buffer[0]==RPSS_ROCK)||(buffer[0]==RPSS_SCISSOR)||(buffer[0]==RPSS_PAPER))
{
player2 = buffer[0];
}
if (buffer[0]==RPSS_QUIT)
{
sprintf (buffer,"%c%d",RPSS_QUIT,0);
send (s[1],buffer,2,0);
closesocket (s[1]);
closesocket (s[2]);
WSACleanup ();
cout << "Player 2 quit\n";
return;
}

if (((int)player1>0)&&((int)player2>0))
{
sprintf (buffer,"%c%d",player2,0);
send (s[1],buffer,2,0);
sprintf (buffer,"%c%d",player1,0);
send (s[2],buffer,2,0);
cout << "Round completed!\n";
}
}
char a;
cin >> a;
}
arvid_gs 2003-11-10
  • 打赏
  • 举报
回复
SOCKET s[3];
sockaddr_in me;
sockaddr you[2];
int addr_size = sizeof (sockaddr);
int num_players = 0;

cout << "Rock, Paper, Scissor, Shoot! Advanced Server\n";
cout << "By Stefan Hajnoczi\n\n";
WSADATA w;
int error = WSAStartup (0x0202,&w);
if (error)
{
cout << "Error: You need WinSock 2.2!\n";
return;
}
if (w.wVersion!=0x0202)
{
cout << "Error: Wrong WinSock version!\n";
WSACleanup ();
return;
}

s[0] = socket (AF_INET,SOCK_STREAM,0);

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧