套接字API(Socket API)程序的编译环境是什么?家庭PC上能调试Socket API程序吗?

znr 2003-09-12 06:20:15
有1个Socket API程序,如下:
client端:
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#define SERVER_PORT 5432
#define MAX_LINE 256

int main(int argc,char * argv[])
{
FILE * fp;
struct hostent *hp;
struct sockaddr_in sin;
char *host;
char buf[MAX_LINE];
int s;
int len;
if(argc=2)
{host=argv[1];}
else{
fprintf(stderr,"usage:simplex-talk host\n");
exit(1);
}

/* translate host name into peer's IP address */
hp=gethostbyname(host);
if(!hp){
fprintf(stderr,"simplex-talk: unknown host: %s\n", host);
exit(1);
}

/* build address data structure */
bzero((char *)&sin,sizeof(sin));
sin.sin_family=AF_INET;
bcopy(hp->h_addr,(char *)&sin.sin_addr,hp->h_length);
sin.sin_port=htons(SERVER_PORT);

/* active open */
if((s=socket(PF_INET,SOCK_STREAM,0))<0){
perror("simplex-talk: socket");
exit(1);
}
if(connect(s,(struct sockaddr *)&sin,sizeof(sin))<0){
perror("simplex-talk:connect");
close(s);
exit(1);
}

/* main loop: get and send lines of text */
while(fgets(buf,sizeof(buf),stdin)){
buf[MAX_LINE-1]='\0';
len=strlen(buf)+1;
send(s,buf,len,0);
}
}

Server端:
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#define SERVER_PORT 5432
#define MAX_PENDING 5
#define MAX_LINE 256

int main()
{
struct sockaddr_in sin;
char buf[MAX_LINE];
int len;
int s,new_s;

/* build address data structure */
bzero((char *)&sin, sizeof(sin));
sin.sin_family=AF_INET;
sin.sin_addr.s_addr=INADDR_ANY;
sin.sin_port=htons(SERVER_PORT);

/* setup passive open */
if((s=socket(PF_INET,SOCK_STREAM,0))<0){
perror("simplex-talk: socket");
exit(1);
}
if((bind(s,(struct sockaddr *)&sin,sizeof(sin)))<0){
perror("simplex-talk:bind");
exit(1);
}
listen(s,MAX_PENDING);

/* wait for connection, then receive and print text */
while(1){
if((new_s=accept(s,(struct sockaddr *)&sin,&len))<0){
perror("simplex-talk:accept");
exit(1);
}
while(len=recv(new_s,buf,sizeof(buf),0))
fputs(buf,stdout);
close(new_s);
}
}

我应当在什么环境下,用什么编译器去调试这个程序?有什么主要的步骤吗?
...全文
85 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
l1ul1u 2003-09-12
  • 打赏
  • 举报
回复
这好象是linux下的程序
要在vc下要改头文件
还要加上WSAStartup()函数
sevencat 2003-09-12
  • 打赏
  • 举报
回复


#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
这几个头文件直接换成
#include <winsock2.h>你这个例子是LINUX下面的,(你假如装的LINUX 的话,就不用换了,不过看起来不太像啊)
再加上这句话。
#pragma comment(lib,"ws2_32.lib")
bzero在有的操作系统上可能没用,用memset代替
perror也最好改成printf
定义s,new_s的时候假如在WIN32下面就可以不要用int,用SOCKET类型吧(实际上好像是个uint)
你先试试吧,看有没有问题
shootingstars 2003-09-12
  • 打赏
  • 举报
回复
一台计算机也可以调试网络程序,连接服务器时连接到127.0.0.1就可以了。
一下是我写的一个Socket类,也许对你有用:
http://www.jdnet.org/docs/show.asp?id=21
如果需要例子程序,留下邮箱。
shootingstars 2003-09-12
  • 打赏
  • 举报
回复
在VC的标准头文件和链接库目录中都包含了上述的文件,直接引用就可以了。

还有上面那个程序应该建立windows控制台工程
znr 2003-09-12
  • 打赏
  • 举报
回复
在VC中进行WINSOCK的API编程开发,需要使用到下面三个文件:

1 WINSOCK.H: 这是WINSOCK API的头文件。

2 WSOCK32.LIB: WINSOCK API连接库文件。在使用中,一点要把它作为项目的非
缺省的连接库包含到项目文件中去。

3 WINSOCK.DLL: WINSOCK的动态连接库,位于WINDOWS的安装目录下。

我到哪里去获得上面三个文件?
znr 2003-09-12
  • 打赏
  • 举报
回复
网络编程中最常用的方案便是客户机/服务器模型。但是,我家里只有一台电脑,我该怎么做?
awant2k 2003-09-12
  • 打赏
  • 举报
回复
忘了说项目类型,选择Win32 Appilication,OK后再选择An empty project
awant2k 2003-09-12
  • 打赏
  • 举报
回复
可以在VC5/6下直接编译、连接、运行和调试的,
先用VC建立一个空白项目,再把你的文件添加到项目就可以编译了
sevencat 2003-09-12
  • 打赏
  • 举报
回复
这个例子可能是最简单的一个了。
客户机从输入行里面等等用户输入一行。然后送到服务器。
服务器全部送到标准输出里面去。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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