【发布时间】:2013-01-10 13:32:37
【问题描述】:
我正在使用客户端-服务器编程我指的是link,我的服务器正在成功运行。
- 我需要不断地向服务器发送数据。
- 我不想每次在发送每个数据包之前都连接()。所以第一次我只是创建了一个套接字并发送第一个数据包,其余的数据我只是使用 write() 函数将数据写入套接字。
但我的问题是,如果服务器不存在或我的以太网被禁用,则在连续发送数据时它仍然成功地将数据写入套接字。
有什么方法可以让我一次创建套接字并在知道服务器故障的情况下连续发送数据?
这样做的主要原因是,在服务器端,我使用的是 GPRS 调制解调器,并且每次为每个数据包调用 connect() 函数时,调制解调器都会挂起。
为了创建套接字我使用下面的代码
Gprs_sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (Gprs_sockfd < 0)
{
Display("ERROR opening socket");
return 0;
}
server = gethostbyname((const char*)ip_address);
if (server == NULL)
{
Display("ERROR, no such host");
return 0;
}
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *)server->h_addr,(char *)&serv_addr.sin_addr.s_addr,server->h_length);
serv_addr.sin_port = htons(portno);
if (connect(Gprs_sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
{
Display("ERROR connecting");
return 0;
}
每次我使用以下代码写入套接字时
n = write(Gprs_sockfd,data,length);
if(n<0)
{
Display("ERROR writing to socket");
return 0;
}
提前致谢......
【问题讨论】:
标签: sockets tcp serversocket