C语言与网络问题 高手进

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言与网络问题 高手进相关的知识,希望对你有一定的参考价值。

用C程序实现PING命令 给出注释和流程图

参考技术A ping命令是dos命令可以创建一个cmd进程,然后建立两个管道用来得到结果 实现.

下面是一个网络编程的实例, Syn扫描器代码,可以作为参考.
基本可以看为是 ping命令的实现
//getallIP.cpp
#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
int main()

////////////////
// 初始化 Windows sockets API.
//
WORD wVersionRequested = MAKEWORD(2, 2);
WSADATA wsaData;
if (WSAStartup(wVersionRequested, &wsaData))
printf("WSAStartup failed %s\n", WSAGetLastError());
return 0;


//////////////////
// 获得主机名.
//
char hostname[256];
int res = gethostname(hostname, sizeof(hostname));
if (res != 0)
printf("Error: %u\n", WSAGetLastError());
return 0;

printf("hostname=%s\n", hostname);
////////////////
// 根据主机名获取主机信息.
//
hostent* pHostent = gethostbyname(hostname);
if (pHostent==NULL)
printf("Error: %u\n", WSAGetLastError());
return 0;

//////////////////
// 解析返回的hostent信息.
//
hostent& he = *pHostent;
printf("name=%s\naliases=%s\naddrtype=%d\nlength=%d\n",
he.h_name, he.h_aliases, he.h_addrtype, he.h_length);

sockaddr_in sa;
//根据 he.h_addr_list[nAdapter]是否为空来获取所有IP地址
for (int nAdapter=0; he.h_addr_list[nAdapter]; nAdapter++)
memcpy ( &sa.sin_addr.s_addr, he.h_addr_list[nAdapter],he.h_length);
// 输出机器的IP地址.
printf("Address [%d%]: %s\n",nAdapter, inet_ntoa(sa.sin_addr)); // 显示地址串

//////////////////
// 终止 Windows sockets API
//
WSACleanup();
return 0;

//mstcpip.h
// Copyright (C) Microsoft Corporation, 1996-1999
#if _MSC_VER > 1000
#pragma once
#endif
/* Argument structure for SIO_KEEPALIVE_VALS */

struct tcp_keepalive
u_long onoff;
u_long keepalivetime;
u_long keepaliveinterval;
;

// New WSAIoctl Options

#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)
#define SIO_RCVALL_MCAST _WSAIOW(IOC_VENDOR,2)
#define SIO_RCVALL_IGMPMCAST _WSAIOW(IOC_VENDOR,3)
#define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4)
#define SIO_ABSORB_RTRALERT _WSAIOW(IOC_VENDOR,5)
#define SIO_UCAST_IF _WSAIOW(IOC_VENDOR,6)
#define SIO_LIMIT_BROADCASTS _WSAIOW(IOC_VENDOR,7)
#define SIO_INDEX_BIND _WSAIOW(IOC_VENDOR,8)
#define SIO_INDEX_MCASTIF _WSAIOW(IOC_VENDOR,9)
#define SIO_INDEX_ADD_MCAST _WSAIOW(IOC_VENDOR,10)
#define SIO_INDEX_DEL_MCAST _WSAIOW(IOC_VENDOR,11)
//synscan.cpp
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>

#include <time.h>
#include "mstcpip.h"
#pragma comment(lib,"ws2_32.lib")
#define SEQ 0x28376839

SOCKET sockRaw = INVALID_SOCKET,
sockListen = INVALID_SOCKET;
struct sockaddr_in dest;

BOOL ScanOK=FALSE;
char *DEST_HOST;
int DEST_PORT;
int DEST_PORTEND;
int play=0;
clock_t start,end;//程序运行的起始和结束时间
float costtime;//程序耗时

typedef struct _iphdr

unsigned char h_lenver; //4位首部长度+4位IP版本号
unsigned char tos; //8位服务类型TOS
unsigned short total_len; //16位总长度(字节)
unsigned short ident; //16位标识
unsigned short frag_and_flags; //3位标志位
unsigned char ttl; //8位生存时间 TTL
unsigned char proto; //8位协议 (TCP, UDP 或其他)
unsigned short checksum; //16位IP首部校验和
unsigned int sourceIP; //32位源IP地址
unsigned int destIP; //32位目的IP地址
IP_HEADER;

typedef struct _tcphdr //定义TCP首部

USHORT th_sport; //16位源端口
USHORT th_dport; //16位目的端口
unsigned int th_seq; //32位序列号
unsigned int th_ack; //32位确认号
unsigned char th_lenres; //4位首部长度/6位保留字
unsigned char th_flag; //6位标志位
USHORT th_win; //16位窗口大小
USHORT th_sum; //16位校验和
USHORT th_urp; //16位紧急数据偏移量
TCP_HEADER;

struct //定义TCP伪首部

unsigned long saddr; //源地址
unsigned long daddr; //目的地址
char mbz;
char ptcl; //协议类型
unsigned short tcpl; //TCP长度
psd_header;

//SOCK错误处理程序
void CheckSockError(int iErrorCode, char *pErrorMsg)

if(iErrorCode==SOCKET_ERROR)

printf("%s Error:%d\n", pErrorMsg, GetLastError());
closesocket(sockRaw);
ExitProcess(-1);




//计算检验和
USHORT checksum(USHORT *buffer, int size)

unsigned long cksum=0;
while (size > 1)

cksum += *buffer++;
size -= sizeof(USHORT);

if (size)

cksum += *(UCHAR*)buffer;

cksum = (cksum >> 16) + (cksum & 0xffff);
cksum += (cksum >>16);
return (USHORT)(~cksum);


//IP解包程序
bool DecodeIPHeader(char *buf, int bytes)

IP_HEADER *iphdr;
TCP_HEADER *tcphdr;
unsigned short iphdrlen;
iphdr = (IP_HEADER *)buf;
iphdrlen = sizeof(unsigned long) * (iphdr->h_lenver & 0xf);
tcphdr = (TCP_HEADER*)(buf + iphdrlen);
//是否来自目标IP
if(iphdr->sourceIP != dest.sin_addr.s_addr) return false;

//序列号是否正确
if((ntohl(tcphdr->th_ack) != (SEQ+1)) && (ntohl(tcphdr->th_ack) != SEQ)) return false;
//if(tcphdr->th_flag == 20)return true;
//SYN/ACK - 扫描到一个端口
if(tcphdr ->th_flag == 18)

printf("\t%d\t open \n",ntohs(tcphdr->th_sport));
return true;


return true;


void usage(void)

printf("\t===================SYN portscaner======================\n");
printf("\t============gxisone@hotmail.com 2004/7/6===========\n");
printf("\tusage: synscan DomainName[IP] StartPort-EndPort\n");
printf("\tExample: synscan www.163.com 1-139\n");
printf("\tExample: synscan 192.168.1.1 8000-9000\n");


DWORD WINAPI RecvThread(LPVOID para)//接收数据线程函数

int iErrorCode;
struct hostent *hp;
char RecvBuf[65535]=0;
sockListen = socket(AF_INET , SOCK_RAW , IPPROTO_IP);
CheckSockError(sockListen, "socket");

//设置IP头操作选项
BOOL bOpt = true;
iErrorCode = setsockopt(sockRaw,IPPROTO_IP,IP_HDRINCL,(char *)&bOpt,sizeof(bOpt));
CheckSockError(iErrorCode, "setsockopt()");

//获得本地IP
SOCKADDR_IN sa;
unsigned char LocalName[256];

iErrorCode = gethostname((char*)LocalName,sizeof(LocalName)-1);
CheckSockError(iErrorCode, "gethostname()");
if((hp = gethostbyname((char*)LocalName)) == NULL)

CheckSockError(SOCKET_ERROR, "gethostbyname()");

memcpy(&sa.sin_addr.S_un.S_addr,hp->h_addr_list[1],hp->h_length);
sa.sin_family = AF_INET;
sa.sin_port = htons(7000);
iErrorCode = bind(sockListen, (PSOCKADDR)&sa, sizeof(sa));
CheckSockError(iErrorCode, "bind");

//设置SOCK_RAW为SIO_RCVALL,以便接收所有的IP包
DWORD dwBufferLen[10] ;
DWORD dwBufferInLen = 1 ;
DWORD dwBytesReturned = 0 ;
iErrorCode=WSAIoctl(sockListen, SIO_RCVALL,&dwBufferInLen, sizeof

(dwBufferInLen),&dwBufferLen, sizeof(dwBufferLen),&dwBytesReturned , NULL , NULL );
CheckSockError(iErrorCode, "Ioctl");
memset(RecvBuf, 0, sizeof(RecvBuf));
//接收数据
for(;;)


iErrorCode = recv(sockListen, RecvBuf, sizeof(RecvBuf), 0);
//CheckSockError(iErrorCode, "recv");
DecodeIPHeader(RecvBuf,iErrorCode) ;

if(ScanOK)

closesocket(sockListen);
return 0;



void playx(void) // 定义状态提示函数

// 进度条
char *plays[12]=

" | ",
" / ",
" - ",
" \\ ",
" | ",
" / ",
" - ",
" \\ ",
" | ",
" / ",
" - ",
" \\ ",
;
printf(" =%s=\r", plays[play]);
play=(play==11)?0:play+1;
Sleep(2);


//主函数
int main(int argc,char **argv)

char *p;
if(argc!=3)

usage();
return 0;


p=argv[2];//处理端口参数
if(strstr(argv[2],"-"))
DEST_PORT=atoi(argv[2]);
for(;*p;)
if(*(p++)=='-')break;
DEST_PORTEND=atoi(p);

if(DEST_PORT<1 || DEST_PORTEND>65535)
printf("Port Error!\n");
return 0;




DEST_HOST=argv[1];

usage();

int iErrorCode;
int datasize;
struct hostent *hp;
IP_HEADER ip_header;
TCP_HEADER tcp_header;
char SendBuf[128]=0;

//初始化SOCKET
WSADATA wsaData;
iErrorCode = WSAStartup(MAKEWORD(2,2),&wsaData);
CheckSockError(iErrorCode, "WSAStartup()");
sockRaw = socket(AF_INET , SOCK_RAW , IPPROTO_IP);
CheckSockError(sockRaw, "socket()");
sockListen = socket(AF_INET , SOCK_RAW , IPPROTO_IP);
CheckSockError(sockListen, "socket");

//设置IP头操作选项
BOOL bOpt = true;
iErrorCode = setsockopt(sockRaw,IPPROTO_IP,IP_HDRINCL,(char *)&bOpt,sizeof(bOpt));
CheckSockError(iErrorCode, "setsockopt()");

//获得本地IP
SOCKADDR_IN sa;
unsigned char LocalName[256];

iErrorCode = gethostname((char*)LocalName,sizeof(LocalName)-1);
CheckSockError(iErrorCode, "gethostname()");
if((hp = gethostbyname((char*)LocalName)) == NULL)

CheckSockError(SOCKET_ERROR, "gethostbyname()");


memcpy(&sa.sin_addr.S_un.S_addr,hp->h_addr_list[1],hp->h_length);
sa.sin_family = AF_INET;
sa.sin_port = htons(7000);
iErrorCode = bind(sockListen, (PSOCKADDR)&sa, sizeof(sa));
CheckSockError(iErrorCode, "bind");

//获得目标主机IP
memset(&dest,0,sizeof(dest));
dest.sin_family = AF_INET;
dest.sin_port = htons(DEST_PORT);
if((dest.sin_addr.s_addr = inet_addr(DEST_HOST)) == INADDR_NONE)

if((hp = gethostbyname(DEST_HOST)) != NULL)

memcpy(&(dest.sin_addr),hp->h_addr_list[1],hp->h_length);
dest.sin_family = hp->h_addrtype;
printf("dest.sin_addr = %s\n",inet_ntoa(dest.sin_addr));

else

CheckSockError(SOCKET_ERROR, "gethostbyname()");



//开启监听线程
HANDLE Thread=CreateThread(NULL,0,RecvThread,0,0,0);

//填充IP首部
ip_header.h_lenver=(4<<4 | sizeof(ip_header)/sizeof(unsigned long));
//高四位IP版本号,低四位首部长度
ip_header.total_len=htons(sizeof(IP_HEADER)+sizeof(TCP_HEADER)); //16位总长度(字节)
ip_header.ident=1; //16位标识
ip_header.frag_and_flags=0; //3位标志位
ip_header.ttl=128; //8位生存时间TTL
ip_header.proto=IPPROTO_TCP; //8位协议(TCP,UDP…)
ip_header.checksum=0; //16位IP首部校验和
ip_header.sourceIP=sa.sin_addr.s_addr; //32位源IP地址
ip_header.destIP=dest.sin_addr.s_addr; //32位目的IP地址

//填充TCP首部
tcp_header.th_sport=htons(7000); //源端口号
tcp_header.th_lenres=(sizeof(TCP_HEADER)/4<<4|0); //TCP长度和保留位
tcp_header.th_win=htons(16384);

//填充TCP伪首部(用于计算校验和,并不真正发送)
psd_header.saddr=ip_header.sourceIP;
psd_header.daddr=ip_header.destIP;
psd_header.mbz=0;
psd_header.ptcl=IPPROTO_TCP;
psd_header.tcpl=htons(sizeof(tcp_header));

Sleep(500);
printf("\n");
printf("Scaning %s\n",DEST_HOST);
start=clock();//开始计时

for(;DEST_PORT<DEST_PORTEND;DEST_PORT++)


playx();
tcp_header.th_dport=htons(DEST_PORT); //目的端口号
tcp_header.th_ack=0; //ACK序列号置为0
tcp_header.th_flag=2; //SYN 标志
tcp_header.th_seq=htonl(SEQ); //SYN序列号
tcp_header.th_urp=0; //偏移
tcp_header.th_sum=0; //校验和
//计算TCP校验和,计算校验和时需要包括TCP pseudo header
memcpy(SendBuf,&psd_header,sizeof(psd_header));
memcpy(SendBuf+sizeof(psd_header),&tcp_header,sizeof(tcp_header));
tcp_header.th_sum=checksum((USHORT *)SendBuf,sizeof(psd_header)+sizeof(tcp_header));

//计算IP校验和
memcpy(SendBuf,&ip_header,sizeof(ip_header));
memcpy(SendBuf+sizeof(ip_header),&tcp_header,sizeof(tcp_header));
memset(SendBuf+sizeof(ip_header)+sizeof(tcp_header),0,4);
datasize=sizeof(ip_header)+sizeof(tcp_header);
ip_header.checksum=checksum((USHORT *)SendBuf,datasize);

//填充发送缓冲区
memcpy(SendBuf,&ip_header,sizeof(ip_header));

//发送TCP报文
iErrorCode=sendto(sockRaw,SendBuf,datasize,0,(struct sockaddr*) &dest,
sizeof(dest));
CheckSockError(iErrorCode, "sendto()");

end=clock();//计时结束
ScanOK=TRUE;
printf("Closeing Thread.....\n");
WaitForSingleObject(Thread,5000);
CloseHandle(Thread);

costtime= (float)(end - start) / CLOCKS_PER_SEC; //转换时间格式
printf("Cost time:%f Sec",costtime);//显示耗时

//退出前清理
if(sockRaw != INVALID_SOCKET) closesocket(sockRaw);
WSACleanup();
return 0;

最先进的3D引擎构架

我想开发一套3D引擎,目前的3D引擎大都是C或C++做开发语言,有没有纯面向对象开发的例子呢,另外想求助怎样搭建一个完美的引擎构架。需要哪些方面的知识。不甚感谢各位,我在武大学软件工程,希望能够和高手交个朋友!^_^

你好!~

一个难以实现的想法
MYSQL初学者使用指南与介绍
第一次使用多线程,领教到它的威力和脾气
第一次使用多线程,领教到它的威力和脾气
DirectX 9高层着色语言介绍
ZLib2000 3D加速渲染2D游戏
ZLib2000 融和+边缘模糊
Keyboard shortcuts
ZLib2000 即时光影
ZLib2000 即时光影
基于IE浏览器的图形聊天室(类可乐8)
ZLib2000 3D引擎
电视互动点播系统
Zephyr 3
关于大型网站的构架问题
冒泡排序的算法分析与改进
冒泡排序的算法分析与改进
在不同计算机上配置 BizTalk Server(运行时)和 BAS
两个有用的oracle数据库运算:intersect和minus运算
一个基于exosip的软电话例子
自绘菜单的实现
动态分组查询
ASP.NET 安全性
Squid做反向加速,配合DNS轮询实现简单负载均衡典型配置
Squid做反向加速,配合DNS轮询实现简单负载均衡典型配置
[dotNET]COM组件转换成.NET组件ZT
C++文件I/O示例
登陆
OSI网络结构的七层模型-网络大典
使用C#编程将websphere MQ 5.3 windows客户端消息发送到linux服务器端
Delphi 与 Word_VBA
设置Windows系统NTFS某个目录的用户访问权限(c#)
保存数据到 olevariant
delphi 常用函数
delphi 常用函数
精妙SQL语句介绍
文件与目录
口腹之欲的文化情怀(ZT)
口腹之欲的文化情怀(ZT)
linux partition table on PC
网络函数库
网络函数库
文件与Olevariant
TCP/IP协议-网络大典
TCP/IP协议-网络大典
关于时间函数
直接访问WebBrowser控件中的HTML源码
直接访问WebBrowser控件中的HTML源码
MVC架构模式
JNI字符集的转换
用C#开发opengl
SIP基本应用
vector方法
ADO.NET读书笔记系列之------ADO.NET概述
Delphi 与 Excel (二)
TStrings的AddObject方法应用
TStrings的AddObject方法应用
fileStream
数据补丁
面向实时物流作业的板坯库管理系统
数据压缩 -- 源码
HTML中的数据绑定(Data Binding)
.NET中的xpath
数据压缩 -- 应用
独立开发并公开源代码的项目
双精度浮点数的加法计算误差及其避免的初步方法
双精度浮点数的加法计算误差及其避免的初步方法
提高FastReplace速度 (fStrRep.pas)
C#的四个基本技巧
Tapestry + Spring + Hibernate 整合工作及相关问题
掌通无线短信平台演示版客户常见问题汇总
广角霸王!尼康800万像CP8400震撼上市
广角霸王!尼康800万像CP8400震撼上市
26个日文片假名导致Access搜索(80040e14/内存溢出)的解决办法
PHP写的挖金子游戏
如何创建原生的窗口程序
eclipse +cvs 的基本使用方法
如何创建原生的窗口程序
java 数据库基本操作
OSI网络结构的七层模型--网络大典
武钢2250mm热轧厂生产物流管理系统的研究与开发
数据结构学习笔记(C语言描述)
引导协议--网络大典
工作流基于Jboss与Mysql的环境配置
仿真视频手机的设计思想
Jdom使用指南
Jdom使用指南
61条面向对象设计的经验原则-《OOD启示录》Arthur J.Riel
创业中的一点点心情,与大家分享!希望大家多多支持!
knoppix
validate框架构建顺序
Word编程中,事件的作用和顺序
finding hidden modules on 2.6 kernel_module_hunter
finding hidden modules on 2.6 kernel_module_hunter
asp.net中合并DataGrid行
网站标题设计与搜索引擎
Samba
Introducing to Spring Framework
Tomcat下Session的使用与管理
Introducing to Spring Framework
在MSSQL版参与问题有所感触
.NET Remoting 安全性
.NET Remoting 安全性
写给新入行的测试组同事
Web 服务安全性
数据访问安全性
数据访问安全性
学习oracle sql loader 的使用
使用 VS.Net 自带打包工具对 Asp.Net Web 应用程序进行打包
XML Name Space----XML 命名空间
XML Name Space----XML 命名空间
安装Oracle9i失败,一定要重灌系统吗?(个人安装后的体会,与大家分享)
Windows下JAVA环境变量的设置祥解
C Error Explanation
Windows下JAVA环境变量的设置祥解
GCC User Guide
制作如IE的标题栏和工具栏(翻译)
制作如IE的标题栏和工具栏(翻译)
制作如IE的标题栏和工具栏(翻译)
JDK5新特性之二----新的格式化输出
“非计算机相关专业”的定义
Samba
浙江大学郑强教授的演讲(转载)
Sendmail
[SQl Server学习] step by step 前言!
linux常用的命令详细说明
安全之道:加密与数字签名
在DataGrid快速添加新行(c#)
用VB做课程设计我有很多问题
如何用JSP处理Oracle中CLOB类型的字段
关于"编译器失败,错误代码为 128。"的解决方案
之控制表格的字数的处理方法.
关于"编译器失败,错误代码为 128。"的解决方案
在 Asp.Net Web 应用程序中长时间装载页面时显示进度条
使用回车代替Tab键的功能代码
SAS9应用- 转化IntrNet架构的应用到IT架构的应用
session 禁止未登录越权浏览信息
寻找成功人生的方向
html&js经典技巧
JbuilderX的光标问题
IMP-00020错误的解决方法
java程序破解天意商务系统后台帐号
设计模式之Builder——购机篇
设计模式之Builder——购机篇
[转]项目管理感触
设计模式之Visitor——送礼篇
[转]项目存档管理规范
Struts+Hibernate+Spring 框架图我的翻译
Spring+Hibernate+Struts技术的一个分页程序,共享给大家
Spring+Hibernate+Struts技术的一个分页程序,共享给大家
计算机程序设计艺术(第I卷)
如何把String型的20%存到数据库里变成float型,也是20%
java中找到资源文件的路径
通过数据表动态建Treeview,绝对高效率!
关于XMLBeans/shcema,不得不说的话题
走入汇编的世界
在ASP.NET中点击一个按钮后让它变灰的简单方法
Mophun & J2ME 的游戏开发之旅(三)
用JS验证asp.net服务端控件
一个软件测试工程师的加班经历
用Visual Basic 6.0实现自动化测试
克隆一例
如何从现有程序升级到支持多国语言的程序!
OrientX 简述
OrientX 简述
FreeBSD 4.10 汉化总结
认识桌面主题及其管理工具
iterator 的使用
Java 2源码解读:java.util.ArrayList
Java 2源码解读:java.util.ArrayList
桌面主题之桌面图标
桌面主题之系统颜色
18个经典培训故事(3)
18个经典培训故事(3)
成为富有实现思想的系统开发者的几点建议
DirectX 9高层着色语言介绍2——语言基础(1)
究竟应该使用什么样的界面?
Delphi 消息机制引入的一个副作用
powerbuilder10试用手记
浙大在线评测 1109 Language of FatMouse
浙大在线评测 1150 S-Trees
浙大在线评测 1150 S-Trees
封装WinCpp
浙大在线评测 1151 Word Reversal
AOL欲推浏览器,决定用IE内核!
浙大在线评测 1159 487-3279
[转帖]IE经典故障写真
杀毒软件||俄罗斯卡巴斯基 最新官方英文服务器版 for Windows File Servers下
GMail Drive
抓屏软件||HyperSnap-DX 5.61.00 汉化版下载
由C#风潮想起的-给初学编程者的忠告( 作者: 刘巍 )
HTML 特殊代码
HTML 特殊代码
今日工作计划
猜想Builder模式的由来
猜想Builder模式的由来
struts开发实践—总论
struts开发实践—总论
struts开发实践—入门学习
struts开发实践—读写xml实例
l10n
l10n
struts开发实践—简单树的实现
struts开发实践—柱形图实例
struts开发实践—如何调用Excel
struts开发实践—柱形图实例
设计模式之Decorator——家装篇(原创)
Readers Choice Awards 2004
名字空间在XML中的应用(原创)
最近小弟在做portal项目,希望在apache开源项目上做,有同道的朋友请联系。msn:shido
名字空间在XML中的应用(原创)
调试SharePoint web part时, 如何可以多个人同时启动调试?
List添加Item时, 如何去判断某个字段, 并且保证字段数据不重复性
List添加Item时, 如何去判断某个字段, 并且保证字段数据不重复性
ORACLE常见错误代码的分析与解决(一)
关于提高基于OpenSSL软件的运行效率的研究
ORACLE常见错误代码的分析与解决(三)
关于提高基于OpenSSL软件的运行效率的研究
发布一个List记录查找Web Part: PowerSearch v1.0
typedef
将使用Access的论坛迁移到SqLServer中
使用自己的命名空间规范Webpart名称
ANT安装、配置
利用Java 创建和读取Excel文档
FLASHMX2004默认支持语法提示的AS后缀!
使用SPFolderCollection以及SPFolder对象分层次显示文档列表
文件过滤驱动的开发(上)
Useful SAP System Administration Transactions
精彩共赏:放出《IT大败局》电台访谈录音
电子商务的理想设计模式-CMP
Swt学习笔记(1)——配置环境
电子商务的理想设计模式-CMP
SWT学习笔记(2)——转载倪大鹏的“SWT:AWT和SWING的强大竞争者”
Eclipse 资源
程序员十大安全技巧(转贴)
SWT学习笔记(2)——转载倪大鹏的“SWT:AWT和SWING的强大竞争者”
Quake源代码分析(草稿).3
通过session传递值(原创)
Eclipse的可视化插件VE
我看软件开发中的误区--思考一
Struts下JSP页面传递复选框值技巧(原创)
态度决定一切——读《Writing clean code》有感
态度决定一切——读《Writing clean code》有感
几种上传方法介绍和比较(原创)
SWT学习笔记(3)——第一个程序
存储过程中建立一个表时出错,为什么?
密码学领域重大发现:成功破解MD5
JDK 1.5 特性使用实例1--Generics
字符集问题的初步探讨(六)-----乱码的产生
JDK 1.5 特性使用实例2--Varargs
Java游戏编程初步
JDK 1.5 特性使用实例3--AutoBoxing
我和我的台湾程序员同事们[5]
我和我的台湾程序员同事们[5]
What is Favicon.ico? Personalise Your Site's Bookm
经典解释――――中国男足为什么总是输? ZT
JDK 1.5 特性使用实例4--Enum
JDK 1.5 特性使用实例5--metadata
缩小SQL SERVER日志文件
JDK 1.5 特性使用实例5--metadata
JDK 1.5 特性使用实例6--staticimport
JDK 1.5 特性使用实例7--运行外部程序
如何使IFrame的长宽与内容自动适应大小
ARX中如何insert一个图(zt)
在XSL里应用javascript/C# Script等
在XSL里应用javascript/C# Script等
如何在unix下读写informix的数据(zxs3543)
使用VBA访问块和块引用数据
如果对字符型编号字段(如1-2)进行排序
修改servlet而不需要重新启动服务器(转载自CSDN之 wjmmml (笑着悲伤))
修改servlet而不需要重新启动服务器(转载自CSDN之 wjmmml (笑着悲伤))
Shark的概念模型及实现模型(部分)
让程序员汗颜的一贴
让程序员汗颜的一贴
收藏文章
我的webwork2的cookie拦截器
数据仓库与企业应用集成(二)
用javascript实现的日期时间输入控件
过去两年中我对代码重用的体验
签名与盖章之新课题-论电子签章之法律效力(转载)
NewEdit编辑器的MusicPlayV0.2插件Release!
磁盘配额的wmi版本(C#)
学习Shark的一些理解
STORED PROCEDURES: GOOD OR BAD(存储过程:好还是坏)
查找某目录下的所有文件
查找某目录下的所有文件
全球最小·灵气智慧 多普达565超详尽(pconline.com)
ACCESS:跨数据库查询的SQL语句
男人25岁前的忠告
CNNRadio-一边工作一边听CNN新闻
限制访问页面(原创)
软件和硬件
Linux必学60个命令文件处理
关于在eclipse中使用lomboz调试jsp的心得
用一条SQL完成数据表的行统计
HMAC-MD5的C#实现
用createPopup()方法来模似透明网页窗体
用createPopup()方法来模似透明网页窗体
VB.NET启动外部程序

参考资料:http://www.sozz.cn/00091/

参考技术A 这么大的饿志向啊!!
厉害!我网络的学的
有什么 问我!要是我回一定支持你

以上是关于C语言与网络问题 高手进的主要内容,如果未能解决你的问题,请参考以下文章

C语言高手 进

linux环境c语言编程!问题棘手!高手进!

C语言高手进~~~

嵌入式高手进 考试题解答

VC++高手进!!!!!!

高手进,关于C语言在windows上建立多线程的问题(VC6.0上实现)