关于PB中制作SOCKET的问题(函数)

mazhihua 2003-08-20 11:46:04
我得到了TCP/IP FOR PB的源码,但是不能理解其中的意思
不明白的函数如下,请高手指教:
1、 ws.WSAGetSelectEvent()
2、 ws.FD_Read
3、 ws.FD_Write
4、 sSocket.recv()
5、 ws.SOCKET_ERROR
6、 sSocket.send()
7、 ws.FD_CLOSE
8、 sSocket.WSAAsyncSelect()
9、 ws.FD_ACCEPT
10、 s.GetHostName()
11、 ws.GetHostByName()
12、 sSock.listen()
13、 sSock.bind()
14、 ultmp = 16^j //ulong ultmp


其中,ws=creat winsock sSock=Socket


我想知道这些函数的功能,所引用的参数类型、返回值类型等,最好有简单的例子。谢谢!

急!!!!!!!
...全文
233 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xys2003 2004-02-25
  • 打赏
  • 举报
回复
给我一分
xiayinsheng7805@sohu.com

谢谢
mazhihua 2003-08-21
  • 打赏
  • 举报
回复
mzh_mzh@163.com

谢谢你!
我的QQ:14144247

请多多指教!

再次感谢!
killerdanny 2003-08-21
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <ctype.h>
#include <errno.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/file.h>
#include <sys/ioctl.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <netdb.h>
#include <unistd.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
//#include <fcnl.h>
#define MYPORT 5000
#define BACKLOG 5
typedef struct user_data_fromweb {
unsigned char user_ip[32]; /* client ip */
unsigned char user_id[32];
unsigned char user_pwd[32];
int user_service_type;//计费OR认证;0:计费;1:认证
int user_command_type;//服务类型,备用 1:默认
int timeout;
} user_data_fromweb;
void sigchild_handler(int);
int main(){

int sockfd,new_fd,fd,iret;
fd_set readfds;
struct sockaddr_in srvaddr;
struct sockaddr_in cliaddr;
struct sigaction act;
char buff[1024];
int sin_size,numbytes;
int pid;

char web_ip[1024];
char UserID[1024];
char UserPwd[1024];
char web_servies[1024];
const char *ser1 = "Aut";
const char *ser2 = "Acc";
user_data_fromweb iuser_data_fromweb;
if((sockfd = socket(AF_INET,SOCK_STREAM,0))== -1){
perror("SOCKET CREATE ERROR");
exit(1);
}
bzero(&srvaddr,sizeof(srvaddr));
srvaddr.sin_family = AF_INET;
srvaddr.sin_port =htons(MYPORT) ;
if (bind(sockfd,(struct sockaddr *)&srvaddr,sizeof (struct sockaddr)) == -1) {
perror("bind error");
exit(1);

}
if (listen(sockfd ,BACKLOG) == -1){
perror("listen error");
exit(1);
}
act.sa_handler = sigchild_handler;
sigemptyset(&act.sa_mask);

for(;;)
{

FD_ZERO(&readfds);
FD_SET(0,&readfds);
FD_SET(sockfd,&readfds);



iret=select(sockfd+1,&readfds,NULL,NULL,NULL);
if (iret==-1)
{
perror("select:");
close(sockfd);
exit(0);
};
if (FD_ISSET(sockfd,&readfds))
{
if ((pid = fork())==0){
// printf("in child process\n");
if (fork() == 0){
sin_size = sizeof(struct sockaddr_in);
new_fd= accept(sockfd,(struct sockaddr *)&cliaddr,&sin_size);
if ((numbytes = recv(new_fd,buff,sizeof(buff),0))<0){
perror("recv:");
exit(1);}
printf("%s\n",buff);

bzero(web_ip,sizeof(web_ip));
bzero(UserID,sizeof(UserID));
bzero(UserPwd,sizeof(UserPwd));
bzero(web_servies,sizeof(web_servies));
sscanf(buff,"%[^|]|%[^|]|%[^|]|%[^|]|s",web_ip,UserID,UserPwd,web_servies);
printf("web_ip:%s\n",web_ip);
printf("UserID:%s\n",UserID);
printf("UserPwd:%s\n",UserPwd);
printf("web_servies:%s\n",web_servies);
memset(&iuser_data_fromweb, 0x00, sizeof(iuser_data_fromweb));

strcat(iuser_data_fromweb.user_ip, web_ip);
strcat(iuser_data_fromweb.user_id, UserID);
strcat(iuser_data_fromweb.user_pwd, UserPwd);

if( memcmp(ser1,web_servies,strlen(ser1)) ==0)
iuser_data_fromweb.user_service_type = 1;
if( memcmp(ser2,web_servies,strlen(ser2)) ==0)
iuser_data_fromweb.user_service_type = 0;
iuser_data_fromweb.user_command_type =1;
iuser_data_fromweb.timeout =1000;
strcat(buff, "OK !!!!!");
printf("iuser_data_fromweb.user_ip:%s\n",iuser_data_fromweb.user_ip);
if (send(new_fd,buff,strlen(buff),0)<0)
perror("SEND:");
close(new_fd);
exit(0);
}
exit(0);

}
}
}

close(sockfd);
}

void sigchild_handler(int sig)
{
pid_t pid;
int status;

for (;(pid = waitpid(-1,&status,WNOHANG))> 0; ){
printf("child%d died :%d\n",WEXITSTATUS(status));
}
}
killerdanny 2003-08-21
  • 打赏
  • 举报
回复
ws是WINSOCK对象!

FD_Read

FD_Write

诸如此类的都是常量!

recv()
connect()
bind()
send ()

这些都是SOCKET函数,建议你还是找本书看吧!

下面有段C程序给你,你要PB的例子的话,把邮箱给我!

1,072

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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