您现在的位置: 范文先生网 >> 理工论文 >> 计算机论文 >> 正文

C语言实的串行通信接口程序

时间:2007-1-30栏目:计算机论文

else if (length !=len) {
AlertUser(hWnd, "Send Length NOT Match!");
return(FALSE);
}
return (TRUE);
}
我们用最简单的语句编制一个UNIX下基于BSD SOCKET的服务器程序,它在建立连接后,只负责将收到的数据发回去,在连接断开后,服务器关闭套接字返回。要编制在Windows下的服务器程序,可参照客户机程序,使用WINSOCK的异步选择机制。
程序5:UNIX下服务器程序源代码
/*TCP/IP必要的头文件*/
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define USERPORT 3333/*用户定义端口号,与客户机相同*/
#define HOST-IP-ADDR "166.111.8.80"/*我们的主机地址*/
main(int argc, char **argv)
{
char buf;/*buffer for sending and receiving data*/
struct sockaddr-in client;/*client address information*/
struct sockaddr-in server;/*server address information*/
int s;/*socket for accepting connections*/
int ns;/*socket connected to client*/
int namelen;/*length of client name*/
int pktlen;/*length of packet received or sended*/
if ((s = socket(AF-INET,SOCK-STREAM, 0))<0) {
perror("Socket()");
return;
}
/*Bind the socket to the server address.*/
bzero((char*)&server, sizeof(server));
server.sin-len =sizeof(struct sockaddr-in);
server.sin-family=AF-INET;
server.sin-port =htons(USERPORT);
server.sin-addr.s-addr=INADDR-ANY;
if (bind(s, (struct sockaddr *)&server, sizeof(server)) <0) {
perror ("Bind()");
return;
}
/*Listen for connections. Specify the backlog as 1. */
if (listen(s,1)!=0) {
perror("Listen()");
return;
}
/*Accept a connection.*/
namelen=sizeof(client);
if ((ns = accept(s, (struct sockaddr *)&client,&namelen))==-1) {
perror("Accept()");
return;
}
/*Receive the message on the newly connected socket.*/
for (;;){
if ((pktlen = recv(ns, buf, 1024, 0))<0) {
perror("Recv()");
break;
}
else if (pktlen==0) {
printf("Recv():return FAILED,connection is shut down! ");
break;
}
else printf("Recv():return SUCCESS, packet length = %d ",pktlen);
sleep(1); /*Sleep() 1秒钟是为了减慢数据交换速度*/
/*Send the message back to the client.*/
if (send(ns, buf, pktlen, 0) <0) {
perror("Send ()");
break;
}
else printf("Send():return SUCCESS, packet length = %d ",pktlen);
}
close(ns);
close(s);
printf("Server ended successfully");
}
四、结束语
本文试图通过一个实例来说明如何使用WINSOCK实现Windows下网络实时通信。从上面的讨论可以看出,使用WINSOCK编制Window

上一页  [1] [2] [3] [4] [5] [6] 下一页

下页更精彩:1 2 3 4 下一页