winsock在哪_winsock是什么语言
1.c语言winsock的问题
2.microsoftvisualc++是什么软件
3.CH代表什么意思
4.学网络编程的好处?
5.socket是什么呀
6.请详细的给我解释一下什么是网络编程
不会也是考网络编程吧?我们刚刚考好,刚复习完
我也是略懂
其实楼主还有一个没提到,就是 winsock.dll
楼主说的afxsock.h我倒是不怎么了解
其他的,他们间是这样的
所有的.h是头文件,.lib是静态库文件,.dll是动态库文件
之所以楼主能使用这些编程就是考这些分工严密的东东帮忙。
socket编程说到底就是使用网络的编程,和普通的程序不同,
socket要用到网络,那它就得用网络设备(就是网卡)。
但一般我们用来写程序的都是像c++这类高级语言,是不操作底层硬件的。
所以就需要有人来帮我们完成或者说屏蔽掉底层的操作。
大致流程是,首先,网卡会有驱动程序来驱动,一般是在系统内的.sys文件完成,
然后.dll会接管工作,此时都还是些硬件的操作,但通过动态链接库后,很多底层的细节开始被屏蔽,这里只指一些琐碎的操作.dll会帮你完成掉了,但其实.dll完成的也是个半成品,楼主也没办法直接用来编程。
于是.lib上场了,.lib将.dll处理的半成品拿来,将它们封装成一个个API,这样,我们就可以通过API来调用网卡的功能了,当然这还不够,API毕竟也是个很麻烦的东西,而且功能不够细化。
于是就做了.h,这些头文件是可以直接打开来看的,实际里面就是些调用API的命令,还有就是把和相关的业务逻辑的变量啊结构体啊给定义一下。
比如在winsock.h中会定义sockaddr_in这样的结构体,用它来表示一个主机的IP和端口很方便,不过也不复杂,楼主也当然可以定义自己的结构体,不过,正是因为这些头文件帮你定义好了很多业务中常用的变量结构体之类,使得你编程的时候能更加关心程序本身了。
大致关系就是这样子调用的。
在写程序中,头文件的包含是不能少的,静态库也必须放到程序里,当然可以通过开发环境的添加或者在程序中直接包含都行,动态链接库一般不用操心,会自带的,不过有时也会遇到损坏之类的,网上直接下一个就行了。
具体的winsock.h winsock2.h也就是些版本上的区别,就像QQ2009和QQ2010都是QQ,都能聊天,就是版本更新了,很多细小的地方有些变动而已。
c语言winsock的问题
VC++编译器的 C语言中有Winsock函数。
头文件 winsock.h, winsock2.h
VC++的 MFC中有Winsock函数,#include <afxsock.h>
microsoftvisualc++是什么软件
server.c服务器端
/*
* Client.c
*
* Created on: 2009/04/17
* Author: gas
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <Winsock.h>
//#include <Winsock2.h>
#include <errno.h>
#define LOCALHOST "127.0.0.1"
#define PORT_NO 1234
static SOCKET s_sock;
static int sock_size;
int main( int argc, char *argv[] ){
WSADATA wsadata;
struct sockaddr_in server_addr;
struct sockaddr_in user_addr;
char tmp[256];
char buf[256];
struct hostent *shost;
memset(&server_addr, 0x00, sizeof(server_addr));
memset(&user_addr, 0x00, sizeof(user_addr));
memset(&tmp, 0x00, sizeof(tmp));
memset(&buf, 0x00, sizeof(buf));
shost = gethostbyname( argv[1] ) ;
if(argc < 3)
{
//printf("Client serverip port\n");
}
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = inet_addr(LOCALHOST); //INADDR_ANY;
server_addr.sin_port = PORT_NO;
if(WSAStartup(MAKEWORD(1,1), &wsadata) != 0)
{
printf("WSAStartup failed.\n");
getchar();
exit(0);
}
s_sock = socket(AF_INET, SOCK_STREAM, 0);
if(s_sock==-1)
{
printf("Create Server Socket Error.\n");
getchar();
exit(0);
}
if(bind(s_sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) == SOCKET_ERROR)
{
printf("bind error.Press Any Key To Exit.\n");
getchar();
exit(0);
}
if(listen(s_sock,5) == SOCKET_ERROR)
{
printf("listen error.Press Any Key To Exit.\n");
getchar();
exit(0);
}
printf("server_addr:%d %d %d\n",server_addr.sin_family,server_addr.sin_port,server_addr.sin_addr.s_addr);
while(1)
{
SOCKET acc_socket;
acc_socket = accept(s_sock, (struct sockaddr *)&user_addr, &sock_size);
printf("user_addr:%d %d %d\n",user_addr.sin_family,user_addr.sin_port,user_addr.sin_addr.s_addr);
if(acc_socket == INVALID_SOCKET)
{
printf("acc_socket error \n");
printf("server_addr:%d %d %d\n",server_addr.sin_family,server_addr.sin_port,server_addr.sin_addr.s_addr);
break;
//continue;
}
printf("Input Message:");
scanf("%s",&tmp);
if(strncmp(tmp,"exit",4) == 0)
{
printf("exit\n");
break;
}else
{
printf("send\n");
}
int n = send(s_sock,tmp,strlen(tmp),0);
recv(acc_socket, buf, sizeof(buf), 0);
printf("RMessage : %s\n",buf);
if(n == -1)
{
printf("send Server Socket Error. %s\n",tmp);
getchar();
exit(0);
}
}
closesocket(s_sock);
WSACleanup();
return EXIT_SUCCESS;
}
现在有以下问题
想实现客户端发个信息,服务器端接受,然后再返个消息给客户端
现在
1 服务器端不启动,客户端报connect错误,服务器端启动,客户端报bind错误,为什么呢(注 客户端注释掉bind代码,也会出现connect error)?
2 服务器端一运行到accept的时候,总是返回错误。
各位高手多多帮忙,谢谢。
CH代表什么意思
microsoftvisualc++是开发工具。是Microsoft公司推出的以C++语言为基础的开发Windows环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过的设置就可使其生成的程序框架支持数据库接口、OLE2.0、WinSock网络。
演示机型:华为MateBook X 系统版本:win10 APP版本:Microsoft Visual C++ 2022
microsoftvisualc++是开发工具。是Microsoft公司推出的以C++语言为基础的开发Windows环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过的设置就可使其生成的程序框架支持数据库接口、OLE2.0、WinSock网络。
学网络编程的好处?
Ch是一个跨平台的C/C++脚本解释器,它支持ISO的C语言标准(C90/C99)和C++类库,附带了8000多个函数库并支持众多的工业标准,支持POSIX,socket/Winsock,X11/Motif,OpenGL,ODBC,C LAPACK,GTK+,Win32,XML和CGI等等。
Ch是以前西班牙语的一个字母,用来表示 [t?] 音。1994年被西班牙科学院取消。
CH是瑞士联邦的英文简称(取了拉丁文瑞士联邦Confoederatio Helvetica的开头字母)。
扩展资料
CH支持ISO的C语言标准(C90/C99)和C++类库,附带了8000多个函数库并支持众多的工业标准,支持POSIX,socket/Winsock,X11/Motif,OpenGL,ODBC,C LAPACK,GTK+,Win32,XML和CGI等等。
Ch具有MATLAB的高级数值计算和绘图的功能,且具有良好的交互性,在C/C++语言编程学习方面尤为好用。Ch也是一个可嵌入的脚本引擎,可以无缝地嵌入到已编译的程序中。
利用Ch,C/C++程序无需编译就可以直接在多平台上运行。它实现了一种语言、到处运行的解决方案(One Language for All?)。
百度百科-CH
socket是什么呀
学编程`就象学语言一样,你学会一种语言你可以用来表示生活中的事情。同样你学会一种编程语言你可以用它来表示计算机世界的很多事情。作用就是你学得好可以转到银子,不好可以自己一下`
程序也叫计算机语言,所以,它是一门语言,和计算机沟通的语言,学会它就可以更好的和计算机交流;
学编程可以锻炼你的逻辑思维能力;
编程其实属于创造,看着一行行代码在自己手中产生,然后顺利的运行,出结果,很有成就感的;
如果你学得好,还可以靠它混口饭吃;
如果你孤独到只剩一台电脑,你也不会无聊到想撞墙,最起码你还可以和计算机交流,当然,用的就是计算机语言,你说中文它听不懂的:)
请详细的给我解释一下什么是网络编程
套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。
一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口。
套接字是通信的基石,是支持TCP/IP协议的路通信的基本操作单元。
可以将套接字看作不同主机间的进程进行双间通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。
套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序),各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。
Socket(套接字)可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,这是一个逻辑上的概念。它是网络环境中进程间通信的API(应用程序编程接口),也是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连进程。
通信时其中一个网络应用程序将要传输的一段信息写入它所在主机的 Socket中,该 Socket通过与网络接口卡(NIC)相连的传输介质将这段信息送到另外一台主机的 Socket中,使对方能够接收到这段信息。?
Socket是由IP地址和端口结合的,提供向应用层进程传送数据包的机制。
类型
1、数据报套接字
无连接套接字,使用用户数据报协议(UDP)。在数据报套接字上发送或接收的每个数据包都单独寻址和路由。数据报套接字不能保证顺序和可靠性,因此从一台机器或进程发送到另一台机器或进程的多个数据包可能以任何顺序到达或可能根本不到达。在数据报套接字上发送广播可能需要特殊配置。
为了接收广播数据包,数据报套接字不应该绑定到特定地址,尽管在某些实现中,当数据报套接字绑定到特定地址时也可能接收广播数据包。
2、流套接字
面向连接的套接字,使用传输控制协议(TCP)、流控制传输协议(SCTP) 或数据报拥塞控制协议(DCCP)。流套接字提供了无记录边界的有序且独特的无错误数据流,并具有用于创建和销毁连接以及报告错误的明确定义的机制。
流套接字以带外功能可靠地、有序地传输数据。在 Internet 上,流套接字通常使用 TCP 实现,以便应用程序可以使用 TCP/IP 协议在任何网络上运行。
3、原始套接字
允许直接发送和接收 IP 数据包,无需任何特定于协议的传输层格式。对于其他类型的套接字,根据选择的传输层协议(例如 TCP、UDP)自动封装有效载荷,并且套接字用户不知道与有效载荷一起广播的协议头的存在。从原始套接字读取时,通常包含标头。
从原始套接字传输数据包时,自动添加标头是可选的。
大多数套接字应用程序编程接口(API),例如基于Berkeley 套接字的那些,支持原始套接字。Windows XP于 2001 年发布,在Winsock接口中实现了原始套接字支持,但三年后,微软出于安全考虑限制了 Winsock 的原始套接字支持。
原始套接字用于与安全相关的应用程序,如Nmap。原始套接字的一个用例是在用户空间中实现新的传输层协议。
原始套接字通常在网络设备中可用,用于路由协议,例如Internet 组管理协议(IGMP) 和开放最短路径优先(OSPF),以及用于Internet 控制消息协议(ICMP) 等事情,由ping 实用程序。
以上内容参考?百度百科-套接字
定义
通过使用套接字来达到进程间通信目的编程就是网络编程。windows提供的基于网络编程的就是套接字也就是winsock,但是现在Winpcap也是一个比较方便的工具。 网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用,编程人员可以不用考虑…… 网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的!中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理! 代码,开发工具,数据库,服务器架设和网页设计这5部分你都要接触 代码分静态代码和动态代码 静态代码是服务器不解析直接发送给客户端的部分,用做布局效果,一般不用于数据库操作 静态代码分html,jascript,css等,其中html语言是基础,要学网络编程就先学html语言.jascript用于实现某些特效,css是样式语言.这3个语言组合起来,可以设计出美妙的网页效果 动态代码是服务器需要解析的部分,用作数据库连接操作等.有php,jsp,asp这几种语言你只用先学一种就可.如果是想快速入门,建议先学asp,如果想学了找工作等,建议学php或jsp, 开发工具有很多种,我推荐一种,网络3剑客,其中dw是开发代码的,fw是做图的.flash是做动画的. 数据库要结合你学的动态语言来选择,asp系列的,你可以使用access,大型点使用mySQL. php和mySQL是很好的搭档. 服务器架设也是结合你学的动态语言的,windows下安装iis很方便,iis可以运行asp,安装.net框架后能运行,这两者架设相对简单,也是我推荐你入门学asp的原因.php一般安装apache服务器,jsp一般安装tomcat服务器.只有架设好服务器,才能浏览动态语言编写的程序. 虽然是编程,但是总会涉及到网页设计部分,还是要去学学怎么简单的作图和动画。编辑本段网络编程介绍
Internet网络模型
网络模型:描述网络的结构原理和工作原理 OSI参考模型:七层 Internet网络模型:四层 网络协议:指定层上进行数据交换的规则。 Internet的网络层协议:IP协议;DNS协议(协议) Internet的传输层协议:TCP协议;UDP协议。
套接字基础
套接字(Sockets):应用程序和网络协议的接口。 Ja Sockets:Ja应用程序和网络协议的接口,提供若干个类的定义。 Ja应用程序利用这些类继承网络协议的行为,实现网络通信。 TCP Sockets:使用TCP协议实现可靠的网络通信。 UDP Sockets:使用UDP协议实现效率较高的网络通信。
数据包组包基础
数据包是网络通信编程的一个重要概念,也称为组装包,指在应用层数据或报文按照一定事先规定好的规则整合的数据集合,实际操作包括组包(打包),数据包传送,解包。 组包(打包),指按照协议把零散的数据或报文按照组合起来,实际应用中,比如在C++编程中,往往定义一种新的数据类型用来存储数据包的结构。数据包传送,指数据包的电气物理传输。解包,指接收端对接收的数据进行解析,获得有用信息和数据。 数据包经常通过套接字来传送.编辑本段网络编程语言:
一、汇编语言
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。 汇编程序通常由三部分组成:指令、伪指令和宏指令。
二、高级语言
高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,这些语言的语法、命令格式都各不相同。高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类: 解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。 编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如Visual C++、Visual Foxpro、Delphi等。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。