- 论坛徽章:
- 0
|
以下代码,在Solaris和linux下都一样,bind的时候,堵塞了。不知道怎么回事,很多例子都是这么写的啊 ... 请大家帮我看看。
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #define BUF_LEN 1024
- int main()
- {
- int svrSock;
- struct sockaddr_in server;
- printf("initialize socket\n");
- svrSock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- if(svrSock==-1) {
- printf("Error when creating socket.\n");
- exit(1);
- }
- int one = 1;
- if (setsockopt(svrSock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) == -1) {
- printf("Error when setting socket option.\n");
- close(svrSock);
- exit(3);
- }
- printf("bind ...\n");
- server.sin_family = AF_INET;
- server.sin_addr.s_addr = htonl(INADDR_ANY);
- server.sin_port = htons(8849);
- if (bind(svrSock, (struct sockaddr *)&server, sizeof(server)) == -1) {
- printf("Error when binding the socket.\n");
- exit(2);
- }
- printf("Reading ...");
- while(1) {
- char rawBuf[BUF_LEN];
- int bytesRead=read(svrSock, rawBuf, BUF_LEN);
- if( bytesRead <= 0) {
- printf("Error on reading.\n");
- continue;
- }
- rawBuf[bytesRead]='\0';
- printf("Received: %s\n", rawBuf);
- }
- close(svrSock);
- return 0;
- }
复制代码 |
|