社区
PowerBuilder
帖子详情
如何接收tcpip发来的数据并解析?
884813
2003-04-23 09:16:30
写下这个题目我自己也搞不大明白。总之是要用PB来做了。各位给指点指点。
...全文
271
18
打赏
收藏
如何接收tcpip发来的数据并解析?
写下这个题目我自己也搞不大明白。总之是要用PB来做了。各位给指点指点。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
884813
2003-04-28
打赏
举报
回复
谢谢参与讨论的朋友。
这里再问一下,有无了解“103归约”的朋友?
884813
2003-04-28
打赏
举报
回复
更正一下,是“103规约”。
online
2003-04-25
打赏
举报
回复
这样的话,你只能用c来做了
跨平台。
有区别,只是底层的函数不一样了
pb7中有connection,transport对象
884813
2003-04-25
打赏
举报
回复
看了些例子,都是基于WINDOWS平台的。现在的问题是,数据从UNIX主机发过来,在WINDOWS平台上接收和解析,这跟客户、服务器都在WINDOWS平台上的连接有区别吗?
884813
2003-04-25
打赏
举报
回复
看看还能不能发言!
884813
2003-04-24
打赏
举报
回复
自己顶一下!
884813
2003-04-23
打赏
举报
回复
谢谢!
killerdanny
2003-04-23
打赏
举报
回复
http://www.cic.tsinghua.edu.cn/sys/book2/ws2chpc12z.htm
你先看看这个!
我在做SERVER
和我以前的CLIENT可以连接
但是发数据还有问题!
884813
2003-04-23
打赏
举报
回复
有能收发的例子最好了!
killerdanny
2003-04-23
打赏
举报
回复
hehe!
你是不是要一个能收发的例子!
884813
2003-04-23
打赏
举报
回复
据说WINSOCK.pbl有不少错误,有用过WINSOCK.pbl的兄弟吗?
rick1126
2003-04-23
打赏
举报
回复
要不你们使用微软的winsock控件, 我还是同意上面的仁兄使用VC写一个DLL
884813
2003-04-23
打赏
举报
回复
这里可以下。
http://lzg.myrice.com/download/file/powersock.zip
884813
2003-04-23
打赏
举报
回复
WINSOCK.pbl我现在也没有,来找找先。
killerdanny
2003-04-23
打赏
举报
回复
应该和上面一样的!
先创建SOCKET,然后BAND,然后LISTEN
然后ACCEPT。
你那里还有WINSOCK.pbl发给我一个,我做一个试试!
我这些都是标准C在LINUX下用的!
884813
2003-04-23
打赏
举报
回复
C自不不必说了。可是要在PB环境下实现,DANNY知道怎么做吗?
killerdanny
2003-04-23
打赏
举报
回复
tcp是上层协议,IP是底层协议!
IP协议的上层有UDP和TCP协议!
TCP协议是面向连接,而UDP是面向非连接!
呵呵!
目前我在做这些东西!
不过是用C
//zw_server.c
#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 <fcnl.h>
#define MYPORT 5000
#define BACKLOG 5
void sigchild_handler(int);
int main(){
int sockfd,new_fd;
struct sockaddr_in srvaddr;
struct sockaddr_in cliaddr;
struct sigaction act;
char buff[100];
int sin_size,numbytes;
int pid;
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(;;){
sin_size = sizeof(struct sockaddr_in);
new_fd= accept(sockfd,(struct sockaddr *)&cliaddr,&sin_size);
//if (new_fd < 0 && errno == EINTR)
//continue;
//printf("server :get connect from %s \n",inet_ntoa(cliaddr.sin_addr));
//strcpy(buff,"this is an example!\n");
//if (send(new_fd , buff,sizeof(buff),0) == -1)
//perror("WRITE error");
//close(new_fd);
if ((pid = fork())==0){
printf("in child process\n");
if (fork() == 0){
if ((numbytes = recv(new_fd,buff,strlen(buff),0))<0){
perror("recv:");
exit(1);}
printf("%s",buff);
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));
}
}
//zw_client.c
#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<sys/stat.h>
#include<fcntl.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#define MYPORT 5000
#define MAX_SEND_DATA 1024
#define BACKLOG 5
int main(int argc,char *argv[]){
int sockfd,nbytes,len;
char buf[1024];
char buff_send[MAX_SEND_DATA];
struct hostent *he;
struct sockaddr_in srvaddr;
if (argc !=3 ){
perror("host home \n");
exit(1);
}
if ((he = gethostbyname(argv[1]) )== NULL){
perror("hostname");
exit(1);
}
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) ;
srvaddr.sin_addr = *((struct in_addr *)he->h_addr);
if (connect(sockfd,(struct sockaddr *)&srvaddr,sizeof (struct sockaddr)) == -1) {
perror("connect error");
exit(1);
}
while(1){
bzero(buff_send,sizeof(buff_send));
len=read(STDIN_FILENO,buff_send,sizeof(buff_send));
//strcpy(buff_send, argv[2]);
if (send(sockfd,buff_send,strlen(buff_send)+1,0)< 0){
perror("send");
exit(1);
}
//for(;;){
memset(buf,0,sizeof(buf));
if ((nbytes = recv(sockfd,buf,sizeof(buf),0)) == -1){
perror(" rec error");
exit(1);
}//}
printf("read:%s",buf);
}
close(sockfd);
}
884813
2003-04-23
打赏
举报
回复
初步的需求就是监听UNIX主机的某个端口,实时把收到的数据写入本地数据库。我还记得在用PB7的时候做所谓的“三层”有listen()等相关的函数,PB8好像已经废除了这些东西。
TCPIP
详解 卷1协议
TCP支持双向
数据
流,即客户端和服务器都可以同时发送和
接收
数据
。TCP通过序列号和确认机制来确保
数据
的顺序性和完整性。 #### 21. TCP的成块
数据
流 TCP还支持成块
数据
流,即一次发送大量
数据
的能力。这种能力对于...
TCP 发包工具(windows)
TCP提供了一种面向连接的服务,确保
数据
的有序、无损传输,并通过流量控制和拥塞控制机制来优化网络性能。在Windows操作系统上,开发者经常需要测试TCP通信,这时就需要用到TCP发包工具。 标题中的“TCP发包工具...
基于labviewTCP双向通信简单demo
-
数据
接收
后,根据应用需求进行
解析
和处理,然后构造响应
数据
并发送回去。 4. **错误处理**: - 在TCP通信中,错误处理是必不可少的。例如,连接失败、
数据
传输错误等都需要适当的错误处理机制。LabVIEW提供了...
使用 Sniffer 工具进行
TCPIP
分析
本实验旨在通过实践操作,使学习者熟练掌握Sniffer工具的安装及使用方法,深入理解TCP/IP协议栈中的关键协议(包括IP、TCP、UDP等)的
数据
结构特征,并能够
解析
ICMP协议的不同类型及其代码含义。此外,还将学习如何...
TCP通信Qt源码
首先,打开本地文件,然后通过QDataStream在QTcpSocket上设置读写模式,逐块读取文件内容并发送,服务器端
接收
到
数据
后同样使用QDataStream
解析
,写入到本地文件完成
接收
。这个过程需要注意的是,确保文件大小和
接收
...
PowerBuilder
1,108
社区成员
66,453
社区内容
发帖
与我相关
我的任务
PowerBuilder
PowerBuilder 相关问题讨论
复制链接
扫一扫
分享
社区描述
PowerBuilder 相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章