user-0 提问: C语言编写点对点通信编译过不了

回复:
user: user-0
content: 引用 18 楼 wyc7610 的回复:版主好认真......... 问题是这样的一个服务器能干什么？ 只能有一个连接进来， 还不检测这个连接是否有效不停止的接收， 即便编译通过意义不大， 建议再做功课， 补充下网络编程的理论知识和实现细节。 想学网络编程这类的有什么好的资料推荐吗

user: user-0
content: 引用 17 楼 mymtom 的回复:还有一行也有问题 第10行  sockaddr_in sockaddr; 改为 struct sockaddr_in sockaddr; 谢谢版主不过还是不能呀  我比较笨求再指导

user: user-1
content: 版主好认真......... 问题是这样的一个服务器能干什么？ 只能有一个连接进来， 还不检测这个连接是否有效不停止的接收， 即便编译通过意义不大， 建议再做功课， 补充下网络编程的理论知识和实现细节。

user: user-2
content: 还有一行也有问题 第10行  sockaddr_in sockaddr; 改为  struct sockaddr_in sockaddr;

user: user-2
content: 1. 在35行有中文空格 2. 在25行，send的第4个参数 NULL ===> 0 3. 在30行，recv的第4个参数 NULL ===> 0 4. 在03行，#pragma comment GCC不支持，注释掉 5. 链接参数加上 -lws2_32, 如六楼所说 然后就可以通过编译了。  #include <stdio.h>                   //用于printf等函数的调用 #include <winsock2.h>                //Socket的函数调用　 //#pragma comment (lib, "ws2_32")      //C语言引用其他类库时，除了.h文件外，还要加入对应的lib文件（这个不同于C#）  int main() {     WSADATA wsaData;     WSAStartup(MAKEWORD(2, 2), &wsaData);     SOCKET s=socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);     struct sockaddr_in sockaddr;     sockaddr.sin_family=PF_INET;     sockaddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");   //需要绑定到本地的哪个IP地址     sockaddr.sin_port=htons(9000);                          //需要监听的端口     bind(s, (SOCKADDR*)&sockaddr, sizeof(SOCKADDR));        //进行绑定动作     listen(s, 1);                                           //启动监听     printf("listening on port [%d].\n", 9000);     while(TRUE)     {         SOCKADDR clientAddr;         int size=sizeof(SOCKADDR);         SOCKET clientsocket;         clientsocket=accept(s, &clientAddr, &size);               //阻塞，直到有新tcp客户端连接         printf("***SYS***    New client touched.\n");         char* msg="Hello, my client.\r\n";         send(clientsocket, msg, strlen(msg)+sizeof(char), 0);  //这里的第三个参数要注意，是加了一个char长度的         printf("***SYS***    HELLO.\n");         while(TRUE)         {             char buffer[MAXBYTE]={0};             recv(clientsocket, buffer, MAXBYTE, 0);            //一直接收客户端socket的send操作             printf("***Client***    %s\n", buffer);         }         closesocket(clientsocket);                                //关闭socket     }     closesocket(s);//关闭监听socket      WSACleanup();                                                //卸载     getchar();     exit(0); }

user: user-3
content: 引用 10 楼 Eng_your 的回复:[quote=引用 8 楼 fly_dragon_fly 的回复:] 在link的右边 直接加上 -lws2_32 依然不行呀，是不是和我的编译器有关，我是CodeBlock，网上都是用VC？[/quote] 没仔细还以为是链接错误，原来是头文件不对 在mingw的gcc下只需要 #include <windows.h>就可以了

user: user-0
content: 这样也不行

user: user-0
content: 引用 12 楼 fly_dragon_fly 的回复:[quote=引用 10 楼 Eng_your 的回复:] [quote=引用 8 楼 fly_dragon_fly 的回复:] 在link的右边 直接加上 -lws2_32 依然不行呀，是不是和我的编译器有关，我是CodeBlock，网上都是用VC？[/quote] 没仔细还以为是链接错误，原来是头文件不对 在mingw的gcc下只需要 #include <windows.h>就可以了[/quote] 我#include<windows.h>放各种位置都不行

user: user-0
content: 引用 7 楼 fanlvlgh 的回复:楼主你用的什么编译器？CodeBlocks

user: user-3
content: 在link的右边 直接加上 -lws2_32

user: user-0
content: 引用 7 楼 fanlvlgh 的回复:楼主你用的什么编译器？GNU GCC

user: user-0
content: 引用 8 楼 fly_dragon_fly 的回复:在link的右边 直接加上 -lws2_32 依然不行呀，是不是和我的编译器有关，我是CodeBlock，网上都是用VC？

user: user-4
content: 楼主你用的什么编译器？

user: user-0

user: user-0
content: 但是对于第二条加了依然不行

user: user-0
content: 引用 2 楼 user-6 的回复:1, 35行有中文空格 ,删掉  2, 右键project ->build option->linker setting  然后在lib libraries中添加: ws2_32 喔，但是对于第二条加了依然不行

user: user-5
content: 因为你的程序是从网页上粘贴来的。

user: user-6
content: 1, 35行有中文空格 ,删掉  2, 右键project ->build option->linker setting  然后在lib libraries中添加: ws2_32

user: user-0
content: 求教为什么编译过不了