这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » vxworks 下的TCP/IP通信问题

共14条 1/2 1 2 跳转至

vxworks 下的TCP/IP通信问题

菜鸟
2007-07-13 22:56:43     打赏

板子是基于powerpc的,socket 通信程序用的是书上的通信例程(同网上的例程一样),

板子做client,PC机做server时,通讯正常

板子做server, PC机做client时,总是连接超时

一个板子做server, 另一快板子做client, 也是连接超时

基于TCP 或 UDP都一样现象,不知道为什么?程序应该是没有问题的,但为什么vxworks做server就不行呢?问题会处在哪里呢?

板子的telnet, ftp ,tftp 功能都没有问题,都可以正常通信,说明vxworks的TCP/IP协议栈应该没有问题

请高手指点,实在是找不出原因了!!!!




关键词: vxworks     下的     通信     问题    

菜鸟
2007-07-16 23:10:00     打赏
2楼

看起来,就是板子做不了Server了。

可以测试下在板子里面运行ftp服务器(ftpd)可不可以,看样子应该是测试代码本身的问题。

可否提供一下连接超时出错的详细信息?


菜鸟
2007-07-19 00:35:00     打赏
3楼

做ftp server没有问题,连接超时的错误信息就是由perror("connect")返回的,除了告诉S_xxx_ETIMEOUT外无任何其他信息


菜鸟
2007-07-19 05:27:00     打赏
4楼

板子做server,vxworks肯定没有问题!你看看你的程序吧!

最好用VXWORKS自己的例子!网上有!


菜鸟
2007-07-20 01:06:00     打赏
5楼

就是因为用的vxworks自己的例子才郁闷的,跟网上的比较了一下一摸一样


菜鸟
2007-07-20 06:41:00     打赏
6楼

powerpc的通信功能很强大的,我用440的都在LINUX下跑过TCP/IP!

你的就很奇怪!


菜鸟
2007-07-20 17:54:00     打赏
7楼
/* vxServer.c - Example code of UDP server. */

/* Copyright 1984-1997 Wind River Systems, Inc. */

/*
modification history
--------------------
01d,06nov97,mm added copyright.
01c,26Sep97,mm cast agr.1 of bzero
01b,26Sep97,mm added include <stdio.h> , <string.h> , <unistd.h>
01a,09Feb94,ms cleaned up for VxDemo.
*/

#include "vxWorks.h"
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include "socket.h"
#include "in.h"
#include "inetLib.h"
#include "udpExample.h"

/*****************************************************************************
* myServer - Server reads from local socket and displays client's message.
* If requested, server sends a reply back to the client. Code executes on
* VxWorks target and use VxWorks header files.
*
* EXAMPLE:
*
* To run this myServer task, from the VxWorks shell do as follows:
* -> sp (vxUdpServer)
*
* RETURNS: OK or ERROR
*/

STATUS vxUdpServer()
{
struct sockaddr_in myAddr; /* Server socket address */
struct sockaddr_in clientAddr; /* Socket address for client */
struct request clientRequest; /* Request/Message from client */
int sFd; /* Server's socket file descriptor */
char inetAddr[INET_ADDR_LEN]; /* Buffer for dot notation *
* internet addr of client */

/* Size of socket address structure */
int sockAddrSize = sizeof (struct sockaddr_in);

LOCAL char replyMsg[] = "Server received your message";

/* Build socket address */
bzero ((char *) &myAddr, sockAddrSize);
myAddr.sin_family = AF_INET;
myAddr.sin_port = htons (SERVER_PORT_NUM);
myAddr.sin_addr.s_addr = htonl (INADDR_ANY);

/* Create socket */
if ((sFd = socket (AF_INET, SOCK_DGRAM, 0)) == ERROR)
{
perror ("socket");
close (sFd);
return (ERROR);
}

/* Bind socket to local address */
if (bind (sFd, (struct sockaddr *) &myAddr, sockAddrSize)
== ERROR)
{
perror ("bind");
close (sFd);
return (ERROR);
}


FOREVER
{
/* Read data from a socket and satisfy requests */
if (recvfrom (sFd, &clientRequest, sizeof (clientRequest), 0,
(struct sockaddr *) &clientAddr,&sockAddrSize) == ERROR)
{
perror ("recvfrom");
close (sFd);
return (ERROR);
}
/* Convert internet address to dot notation for displaying */
inet_ntoa_b (clientAddr.sin_addr, inetAddr);
printf ("MESSAGE FROM: Internet Address %s, port %d\n%s\n",
inetAddr, ntohs (clientAddr.sin_port), clientRequest.message);

/* If client requested a reply, send acknowledgment */
if (clientRequest.reply)
if (sendto (sFd, replyMsg, sizeof (replyMsg), 0,
(struct sockaddr *) &clientAddr,sockAddrSize) == ERROR)
{
perror ("sendto");
close (sFd);
return (ERROR);
}
}

close (sFd); /* Just in case. Should never get here. */
}

菜鸟
2007-07-20 17:55:00     打赏
8楼
DOWNLOAD后用sp (vxUdpServer)
就可以我用了不错的!

菜鸟
2007-07-20 23:06:00     打赏
9楼

多谢maomaotr的帮助,我down下来试验一下:)


菜鸟
2007-07-24 19:15:00     打赏
10楼

还是不行啊,我的程序跟你的程序基本上是一样的,问题肯定不是在程序上,就那么几条语句不肯能写错的,程序已经找N个人反复检查过了,我想知道除了程序以外还有哪些方面能够影响tcp/ip通信?


共14条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]