这是一个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++怎么来写出正确的第一个网络程序呢?敬盼各位朋友的指点与帮助了,谢谢!
先附上源代码(按照<<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++怎么来写出正确的第一个网络程序呢?敬盼各位朋友的指点与帮助了,谢谢!
解决方案 »
- 求助,想做个CS1.6的外挂,求思路
- 发现一个STL的bug
- 毕业设计最后一步,帮帮忙
- 完成端口的问题,为什么我分配内存给AcceptEx()参数调用后,用完后再释放内存有问题啊!
- VC理通过ADO调用存储过程无法传递参数
- 高分提出一个简单的问题
- 帮写个浏览ftp的函数把..
- 怎样把数据库中的某项数据在文本框中显示出来?
- 写的小程序发布一下....有志同道合的交流一下.....
- VC中头文件声明的变量为什么不能在头文件中赋值
- 在带checkbox的listctrl中如何得到所有选中的行?
- 使用build工具使用的sources文件里支持!IF,!ELSE,!ENDIF吗?我的语法哪里有问题呢?
link找不到,加进对应的lib库文件 wsock32.lib
#pragma comment(lib,"ws2_32.lib")使用socket编程,在windows,linux,unix上没有多大的差别只是有一些函数是系统有的,比如read,pselect是unix系统扩展的,WSARecv是windows扩展的,不是barkeley的,要查看清楚。同时要注意包含一些库文件和头文件
[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'