这是一个Dev C++ 实现一个TCP时间日期客户程序
先附上源代码(按照<<UNIX网络编程>>上的思路):
#include <winsock2.h>
#include <iostream>
using namespace std;#define MAX_LINE 100
typedef struct sockaddr SA;int main(int argc,char * * argv)
{
    struct sockaddr_in servaddr;
    int    sockfd,n;
    char   recvline[MAX_LINE+1];
    struct in_addr ipServer;
    DWORD  dwIP;
    
    if(argc == 2)cout << "<IP address!>" << endl;
    if(sockfd = socket(AF_INET,SOCK_STREAM,0) < 0) cout << "socket error!" << endl;
    
    memset(&servaddr,0,sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(80);
    
    dwIP = inet_addr(argv[1]);
    ipServer = *((LPIN_ADDR)&dwIP);
    
    servaddr.sin_addr = ipServer;
    
    if(connect(sockfd,(SA *)&servaddr,sizeof(servaddr))<0)
       cout << "connect error!" << endl;
    
    while(n = read(sockfd,recvline,MAX_LINE)) > 0)
    {
         recvline[n] = 0;
         if(fputs(recvline,stdout) == EOF) cout << "fputs error!" << endl;           
    }
    if(n < 0)cout << "read error!" << endl;
    
    return 1;    
}编程环境是在windows/Dev C++ 5.0。
但是编译时就通不过,首先是read函数没有定义,然后是连接的时候找不到socket、inet_addr等,难道只能在Liux下才可以运行的么?还有我现在还不想用VC++6.0 的CSOCKET类来开发,你说我用Dev C++怎么来写出正确的第一个网络程序呢?敬盼各位朋友的指点与帮助了,谢谢!

解决方案 »

  1.   

    read 这里应该recv等接收的api吧
    link找不到,加进对应的lib库文件 wsock32.lib
      

  2.   

    #include <winsock.h>
    #pragma comment(lib,"ws2_32.lib")使用socket编程,在windows,linux,unix上没有多大的差别只是有一些函数是系统有的,比如read,pselect是unix系统扩展的,WSARecv是windows扩展的,不是barkeley的,要查看清楚。同时要注意包含一些库文件和头文件
      

  3.   

    加上后,出现这种错了
      [Linker error] undefined reference to `socket@12' 
      [Linker error] undefined reference to `htons@4' 
      [Linker error] undefined reference to `inet_addr@4' 
      [Linker error] undefined reference to `connect@12'