【C大事】第十一讲:Socket网络编程

注:上接第七讲,此为视频的第二版。

***************************

网络编程:计算机与计算机之间的通信。



域名、ip地址 dns服务器。

手机联系人、电话号码

 

一个计算机可以同时运行多个网络程序,引入了端口port
与就是一个计算机上可以并发运行多个网络程序,而不会再互相之间产生干扰
。网络通讯基于“请求-响应”模型。一端发送数据,另外一端反馈数据。

c/s、b/s结构。
p2p程序:即时客户端,优势服务器端。

tcp传输控制协议、udp用户数据报协议
打电话、发短息。



 

端口具有排他性。端口已被别的程序占用之后,就不能再使用这个端口了。例如:打开两个qq的客户端。所以每次连接之后,socket替客户端动态分配了一个端口。故不需要在程序中显示指定客户端的端口号。



 

 

void ShowError()
{
    TCHAR* lpMsgBuf;
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,
        GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL);
    MessageBox(NULL, lpMsgBuf,"", MB_ICONERROR);
}

 

 

void SocketTest()
{
    WSADATA wsaData;
    //初始化Socket库
    WSAStartup(MAKEWORD(2, 0), &wsaData);
    //创建一根电线
    SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    SOCKADDR_IN sa;
    sa.sin_family = AF_INET;
    //设置电线连接服务器断的端口
    sa.sin_port = htons(IPPORT_SMTP);//25
    // 220.181.12.14是ping smtp.163.com出来的
    sa.sin_addr.S_un.S_addr = inet_addr("220.181.12.14");
    if(connect(sock, (SOCKADDR *)&sa, sizeof(sa)) == SOCKET_ERROR){
        ShowError();
        return;
    }
//smtp服务器特点:连上之后,服务器主动向客户端发送一条消息
    TCHAR buffer[256];
    ZeroMemory(buffer, sizeof(buffer)/sizeof(char));
    recv(sock, buffer, 256, 0);
    MessageBox(NULL, buffer, "接收的消息", MB_OK);

    TCHAR cQuit[] = "QUIT\n";
    send(sock, cQuit, lstrlen(cQuit), 0);
    ZeroMemory(buffer, sizeof(buffer)/sizeof(char));
    recv(sock, buffer, 256, 0);
    MessageBox(NULL, buffer, "发送的消息", MB_OK);

    closesocket(sock);
    WSACleanup();

}

 

 

 

 

时间: 2025-01-23 12:14:54

【C大事】第十一讲:Socket网络编程的相关文章

Socket网络编程学习笔记(1):常用方法介绍

虽然天天上博客园欣赏各位"大侠"的杰作,偶然回首,突然发 现自己已成"潜水者"久矣.本来对于自己有限的水平,有点不好意 思在此发贴,不过潜伏久了,才慢慢意识到老是通过浏览他人的文章虽然能够提 高自己能力,能够及时的获取新技术新思想,但却只能停留在他人的思想上.通 过学习,加上自己的想法,再写出来,让大家来指证错误,不仅能够巩固自己的 知识,也可以让一些跟我一样迷惘的朋友们不用再去走一些弯路,岂不是两全其 美,本着这样的想法,打算把自己平时的所学所想都写下来,欢迎各路

Socket网络编程学习笔记(3):利用套接字助手类

在上一篇中已经介绍了利用Socket建立服务端和客户端进行通信,如果需要 的朋友可访问<Socket网络编程学习笔记(2):面向连接的Socket>.在本篇 中,将利用C#套接字的助手类来简化Socket编程,使得刚刚接触到网络编程的 朋友们更容易上手. 跟上篇一样,通过C#套接字的助手类来编程同样分 服务端和客户端. 一.服务端侦听模式 1.创建套接字与 IPEndPoint绑定,并设置为侦听模式. 1//创建IPEndPoint实例 2 IPEndPoint ipep = new IPEn

Python Socket 网络编程

原文:Python Socket 网络编程 Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ 聊天.收发 email 等等.要解决网络上两台主机之间的进程通信问题,首先要唯一标识该进程,在 TCP/IP 网络协议中,就是通过 (IP地址,协议,端口号) 三元组来标识进程的,解决了进程标识问题,就有了通信的基础了. 本文主要介绍使用 Python 进

socket 网络编程传输文件

问题描述 socket 网络编程传输文件 进行网络通信,socket编程,传输文件过程中,如何来通过调用函数来获得传输文件的大小,以及传输该文件相对应的时间,有什么好的办法吗? 解决方案 从来没弄过Socket的一些东西,最近看了看,一些小东西,希望能帮到和我一样的菜鸟.1.win32程序下的文件传输1.1.Client Code#include #include long GetFileLen(FILE *_file){ long curPosit=ftell(_file)fileLen; f

socket网络编程 文件传输的问题?

问题描述 socket网络编程 文件传输的问题? socket网络编程,目前是同时开启两个进程两个线程,同时从server那端传输两个文件过来,是可以实现,任意格式的文件和任何大小的文件都可以.现在的项目要求是这两个进程要同时传输一个文件.我的思路是一个进程传输该文件的前一半,另一个进程传输该文件的后一半,具体实现就不知道了,希望大家给点意见,已经摸索了好几天.毫无头绪啊!!!!!项目马上就要完成了,谢谢大家. 解决方案 RandomAccessFile,看看吧. 解决方案二: 循序渐进Sock

socket-Windows Socket网络编程中使用的IP地址是公网IP还是内网IP?

问题描述 Windows Socket网络编程中使用的IP地址是公网IP还是内网IP? 因为我按照书上的代码写了一个程序,就是connect什么什么的,我写的MFC做客户端,网络调试助手做服务器端,然后从网络调试助手向MFC程序发送信息.当网络调试助手和MFC程序在一台电脑上时连接是可以成功的,但是在两台电脑上时就不成功了,调试的时候就是connect半天没反应,然后就失败了.IP地址我都填对的.(如果是两个网络调试助手在两台电脑上是能成功连接的,但是我找不到网络调试助手的源代码) 有谁知道是什

python之Socket网络编程详解_python

什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系.在数学上,网络是一种图,一般认为专指加权图.网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型.在计算机领域中,网络是信息传输.接收.共享的虚拟平台,通过它把各个点.面.体的信息联系到一起,从而实现这些资源的共享.网络是人类发展史来最重要的发明,提高了科技和人类社会的发展. 网络通信的三要素 IP地址 用来表示一台独立的主机 特殊的IP地址 127.0.0.1或称localhost(表示本地回环

【转】Windows Socket网络编程(二)----套接字编程原理

Windows Socket 网络编程(二) -- 套接字编程原理作者: 冰点工作室 小鹰 一.客户机/服务器模式在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Server model).该模式的建立基于以下两点:1.非对等作用:2.通信完全是异步的.客户机/服务器模式在操作过程中采取的是主动请示方式: 首先服务器方要先启动,并根据请示提供相应服务:(过程如下)1.打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求.2.等待客户请求到达该端

Socket 网络编程实践经验

目录 目录 相关文章 Socket 与 HTTP 的区别 生产实践考虑 网络断开重连问题 Heartbeat 心跳机制 使用非阻塞模式下的 select 函数进行 Socket 连接检查 会话过期问题 同步还是异步问题 数据缓存问题 完全断开连接问题 相关文章 NOTE:本文假设你已经对 Socket 的使用有一定的了解. Python Module_Socket_网络编程 Socket 与 HTTP 的区别 首先通过对比法来了解两者不同的特性: HTTP:超文本传输协议,首先它是一个协议,并且