vxworks很急的问题?!!
我做的通讯的程序
把客户端和服务端放到一台机器上
先发起客户端任务,优先级100,屏幕打印message send:
入口函数如下:STATUS tcpClient
(
char * serverName /* name or IP address of server */
)
{
/*static char serverName{}="192.168.1.15"*/
struct request myRequest; /* request to send to server */
struct sockaddr_in serverAddr; /* server's socket address */
char replyBuf[REPLY_MSG_SIZE]; /* buffer for reply */
char reply; /* if TRUE, expect reply back */
int sockAddrSize; /* size of socket address structure */
int sFd; /* socket file descriptor */
int mlen; /* length of message */
tidshowreal.tidcount++;
/* create client's socket */
if ((sFd = socket (AF_INET, SOCK_STREAM, 0)) == ERROR)
{
perror ("socket");
return (ERROR);
}
/* bind not required - port number is dynamic */
/* build server socket address */
sockAddrSize = sizeof (struct sockaddr_in);
bzero ((char *) &serverAddr, sockAddrSize);
serverAddr.sin_family = AF_INET;
serverAddr.sin_len = (u_char) sockAddrSize;
serverAddr.sin_port = htons (SERVER_PORT_NUM);
if (((serverAddr.sin_addr.s_addr = inet_addr (serverName)) == ERROR) &&
((serverAddr.sin_addr.s_addr = hostGetByName (serverName)) == ERROR))
{
perror ("unknown server name");
close (sFd);
return (ERROR);
}
/* build request, prompting user for message */
printf ("Message to send: \n");
mlen = read (STD_IN, myRequest.message, REQUEST_MSG_SIZE);
myRequest.msgLen = mlen;
myRequest.message[mlen - 1] = '\0';
/* connect to server */
if (connect (sFd, (struct sockaddr *) &serverAddr, sockAddrSize) == ERROR)
{
perror ("connect");
close (sFd);
return (ERROR);
}
/* send request to server */
if (write (sFd, (char *) &myRequest, sizeof (myRequest)) == ERROR)
{
perror ("write");
close (sFd);
return (ERROR);
}
close (sFd);
return (OK);
}
在accept后发起服务任务,优先级101,将接到的消息打印出来
入口函数如下:
VOID tcpServerWorkTask
(
int sFd, /* server's socket fd */
char * address, /* client's socket address */
u_short port /* client's socket port */
)
{
struct request clientRequest; /* request/message from client */
int nRead; /* number of bytes read */
static char replyMsg[] = "Server received your message";
/* read client request, display message */
while ((nRead = fioRead (sFd, (char *) &clientRequest,
sizeof (clientRequest))) > 0)
{
printf ("MESSAGE FROM CLIENT (Internet Address %s, port %d):\n%s\n",
address, port, clientRequest.message);
free (address); /* free malloc from inet_ntoa() */
}
if (nRead == ERROR) /* error from read() */
perror ("read");
close (sFd);
}
我想,客户端先发起,优先级靠前,服务端打印消息的任务后发起,优先级靠后所以message send:先出现,发送消息后才打印接到的消息;
但现在message send:出现后,只要有消息来,马上打印,message send:不再出现
也不能发消息了。明明是客户端的优先级靠前啊,难道是有什么我想错了的??
我程序编译通过了,通讯的函数是从例程截下的应该没问题。