Eclipse下C语言的Socket编程(Winsock,gcc)问题总结

2023-05-16

最近心血来潮想从新温习一下C语言(工作后一直用Java,其实大学时C语言课程也没好好上,正经的代码基本没写过,惭愧啊!),找了些小例子,修修改改,编译、运行、测试,很快也算上手了。IDE我用的是Eclipse(Java编程时一直都用习惯了,情有独钟),编译器用gcc,操作系统Win8;小程序有点玩腻了,今天想来个跨越,搞些有点实际意义的代码,就想到了Socket编程。毕竟网络编程还是很重要的(Java中快玩烂掉了,jdk的api很好用,比C语言容易),但是C语言网络编程这块我是一穷二白啊,所以呢就先百度了一下,找到很多例子,但是很多都有问题,主要有如下几种:

  • 操作系统问题
有些例程是Linux下的socket编程代码,一般文件头像这样:
#include <stdlib.h>  
#include <sys/types.h>  
#include <stdio.h>  
#include <sys/socket.h>  
#include <linux/in.h>  
#include <string.h>  
这个并不适合我目前的开发环境,C语言这点上也是比较麻烦,不像Java是跨平台的,你需要为不同的系统单独实现一个版本,java的native方法就是这么做的,只不过jdk帮我们做好了。
  • 编译器问题
有的例子是这样子的:
#include "stdafx.h"  
#include <stdio.h>  
#include <winsock2.h>  
#pragma comment(lib,"ws2_32.lib") 
一开始我用了,但发现编译不通过,"stdafx.h"  和#pragma 在gcc里根本就木有,原来这些都是vc的语法,这个也pass了。
  • ws2_32.lib问题
后来找了个纯C的:
#include<winsock2.h>
#include<stdio.h>
但是编译时报错了:
VARCHARserver.c:12: undefined reference to `WSAStartup@8'
VARCHARserver.c:17: undefined reference to `WSACleanup@0'
VARCHARserver.c:20: undefined reference to `socket@12'
VARCHARserver.c:22: undefined reference to `htonl@4'
VARCHARserver.c:24: undefined reference to `htons@4'
VARCHARserver.c:26: undefined reference to `bind@12'
VARCHARserver.c:30: undefined reference to `listen@8'
VARCHARserver.c:38: undefined reference to `accept@12'
VARCHARserver.c:49: undefined reference to `send@16'
VARCHARserver.c:55: undefined reference to `recv@16'
VARCHARserver.c:57: undefined reference to `closesocket@4'

查一些资料,大概意思就是,gcc缺少库“ws2_32.lib”,需要在编译时指定:
gcc prog.c -o prog.exe [...other .c and .o files...] -lws2_32 ...
使用-l选项,那么这个参数能否在eclipse中配置呢,我自己找了一下,是可以配置的:
点击工程属性-->C/C++ Bulid-->Settings-->Tool Settings-->MinGW C Linker-->Libraries ,在这里面添加wsock32。
搞定了,编译通过了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Eclipse下C语言的Socket编程(Winsock,gcc)问题总结 的相关文章

  • Hadoop 作业:任务在 601 秒内无法报告状态

    在伪节点上运行 hadoop 作业时 任务失败并被杀死 错误 任务尝试 在 601 秒内无法报告状态 但同一个程序正在通过 Eclipse 运行 本地作业 任务 大约有 25K 个关键字 输出将是所有可能的组合 一次两个 即大约 25K 2
  • Eclipse 的 CoffeeScript 编辑器插件?

    事情是这样的 我使用 Wro4j 来处理 coffee 文件到 js 文件的转译 构建 现在我想要一个支持CoffeeScript的好的编辑器插件 并且我不想安装Aptana 我只需要CoffeeScript 不需要Python Ruby和
  • 基于 MIPS 的 codesourcery 工具链的编译参数?

    我在我的 WIN 7 机器上安装了用于 mips32 架构的 codesourcery 交叉编译工具链 我想首先为我的路由器编译一个基于 MIPS32 的简单 阶乘 二进制文件 在网上搜索了一下 我发现它是基于MIPS32 big endi
  • 如何正确初始化“min”变量?

    我的代码中有一个小问题 用于从一系列数字中查找最小值 当我初始化时min 0 最小值结果为0 但是当我不初始化时min 答案是正确的 为什么会出现这种情况 Xcode 告诉我应该初始化min多变的 int a 20 0 int max 0
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 无法在 OSX 上使用 eclipse for android 链接到 cocos2dx

    我以前从来没有花这么多时间来初始设置开发环境 这有点荒谬 我正在尝试运行cocos2dx附带的演示代码 我在用着 ADK 附带的 eclipse 风格 cocos2d 2 1beta3 x 2 1 0 ndk r8c 我尝试使用 creat
  • decltype 和隐藏外部名称的类成员名称之间的交互

    这段代码 int clash struct Foo decltype clash clash 在 clang 上静默编译 但在 gcc 上编译失败并给出错误 错误 声明 int Foo clash fpermissive 错误 将 冲突 的
  • 为什么 fopen("any_path_name",'r') 不给出 NULL 作为返回值?

    在调试一些代码时 我得到如下内容 include
  • 无法访问 res 文件夹?

    我有一个 Java 编程问题 需要帮助 我的类文件位于单独的包中 不是默认包 我正在尝试从我的 res 文件夹访问文件 我已将其添加为类文件夹 使用属性 gt 库 gt 添加类文件夹 在我的类中 我有以下代码 InputStream IS
  • 如何将配置文件添加到 Eclipse 中的默认 Maven 目标?

    我在 Eclipse 中使用 Maven 来构建和部署代码 选择时 Context Menu gt Run As 几个Maven目标如下 据我所知 如果我想创建自定义构建配置 我会单击 运行配置 来创建自定义配置 然而 似乎没有办法修改菜单
  • 如何同时支持 IPv4 和 IPv6 连接

    我目前正在开发 UDP 套接字应用程序 需要构建支持 以便 IPV4 和 IPV6 连接可以将数据包发送到服务器 我希望有人能帮助我并为我指明正确的方向 我发现的大部分文档都不完整 如果您能指出 Winsock 和 BSD 套接字之间的任何
  • Eclipse/PyDev 中未使用导入警告,尽管已使用

    我正在我的文件中导入一个绘图包 如下所示 import matplotlib pyplot as plt 稍后我会在我的代码中成功使用此导入 fig plt figure figsize 16 10 然而 Eclipse 告诉我 未使用的导
  • NetBeans 代码模板 ${date}?

    我在 Eclipse 中有这个代码模板 自 日期 起 当输入时我得到这样的东西 自2009年8月4日起 但是当我添加相同的模板时 自 日期 起 到 NetBeans 它输出 自日期以来 有人可以帮忙吗 还没有答案吗 这在 Netbeans
  • py2exe ImportError:没有名为 的模块

    我已经实现了一个名为 myUtils 的包 它由文件夹 myUtils 文件 组成 init py 和许多名称为 myUtils 的 py 文件 该包包含在 myOtherProject py 中 当我从 Eclipse 运行它们时可以找到
  • 在 php 中为类自动生成 getter 和 setter 的最佳方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我经常创建一个包含一些私有变量的类 当设置此类的实例时 应该可以使用 getter 和 setter 填充该类的所有变量 有没有一种简单的方法可
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • Eclipse 的 Bash 脚本插件? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有正经的bashEclipse 的插件 我唯一的要求是语法突出显示 我用谷歌搜索过 但没有看到任何
  • 如何清理 Eclipse“运行配置”

    我在 Eclipse 的 Window gt Prefs gt Java gt Installed JREs gt Default VM Arguments 中设置了 java 运行时选项 由于这个设置足以满足我所有的需求main 入口点
  • 如何在 Eclipse 中关闭 Javadoc 悬停(或有选择地启用它)?

    一位开发人员不喜欢 Eclipse 悬停 Javadoc 并希望禁用它 一个选项 或者更好的是 仅选择性地启用它 另一个选项 他使用的是 Eclipse 3 3 这可能吗 不确定 选择性 启用它是什么意思 基于什么 下面的说明适用于 3 5
  • 将 Maven 项目从 Git 导入到 Eclipse 中

    如何获得选择从 Maven 和 Git 导入并让 Eclipse 正确生成我的项目的效果 要将我的项目导入 Eclipse 我可以选择 File gt import gt maven 然后导入所有 Maven 项目并可以正常构建 或者我可以

随机推荐