socket编程入门

本文介绍了Socket编程的基础知识,特别是在Windows环境下。讲解了如何创建服务器端和客户端,包括定义套接字、初始化监听、建立连接等步骤,并强调了异常处理和错误检查的重要性。
摘要由CSDN通过智能技术生成

Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求。一个Socket由:IP地址+端口号 所组成;

网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。

现在编写两个程序(运行在同一台主机上),一个作为服务器端,一个作为客户端;思路如下:


以下是Windows下的Socket编程,需要的头文件有:

#include<stdio.h>
#include<memory.h>
#include<WinSock2.h>  //Socket所在的头文件
但是仅仅包含头文件还不可以,需要把链接文件包含进来:
#pragma comment (lib, "ws2_32.lib") 
否则程序无法运行!


服务器端:
0.定义两个socket标识:int listenFd,connectFd;一个用于监听是否有客户进行连接,一个用于和客户端进行连接


1.添加以下一个变量以及一个函数:

  WSADATA wsaData;
  WSAStartup(0x0101, &wsaData);
WSAStartup函数是为了通知系统调用Socket的Dll(动态链接库文件),故 WSAStartup应先于其他的winsock函数

如果不添加该函数,则容易导致程序无法运行;


2.初始化监听套接字:

 int listenFd=socket(AF_INET,SOCK_STREAM,0);
套接字实际是一个int整型,计算机中很多资源、程序都会用一个int进行表示,例如句柄、进程PID、Linux下的文件表示等(有不懂可以自行Google查阅)

#func解说:int sock=socket( protofamily, type, protocol );
  protofamily指定所使用的协议族,对TCP/IP协议族取值为AF_INET。type指定采用的  通信类型:流传输模式取值SOCK-STREAM;报文传输模式取值SOCK-DGRAM。protocol指  定所使用的传输协议,可默认为0; 

3.定义服务器的地址用于通信:struct sockaddr_in serverAddr;
  sockaddr_in是一个结构体:

struct sockaddr_in {
u_char sin_len;           /* total length of the address */
u_char sin_family;        /* family of the address 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值