精华内容
下载资源
问答
  • WinSocket

    2019-04-05 12:03:02
    1、WSA(window Socket asynchronous)window异步套接字 2、需要加载对应的库文件#pragma comment(lib, " ") 参考:C语言的Socket编程例子 一、TCP类型的socket的例子: #include <iostream>...

    socket:socket是用户进程和内核网络协议栈的编程接口

    1、WSA(window Socket asynchronous)window异步套接字
    2、需要加载对应的库文件#pragma comment(lib, " ")
    3、socket监听函数的的第二个参数是什么意思?socket建立成功后会建立多好个队列进行维护?
    4、对方地址一定要有初始化值,否则accept会失败
    5、监听套接字属于被动套接字
    6、recv等于0表示客户端断开连接了

    参考:C语言的Socket编程例子

    一、TCP类型的socket的例子:

    #include <iostream>
    #include <WinSock2.h>
    using namespace std;
    #pragma comment(lib, "ws2_32.lib")
    
    void ServiceTCP()
    {
    	WSADATA wd;//window异步套接字数据
    	SOCKET service;//服务器的socket
    	SOCKADDR_IN sin;//服务器的套接字
    	char revData[1024];//接收数据
    	int revDataLen;//接收数据的长度
    	SOCKET client;//客户端socket
    	SOCKADDR_IN clientAddr;//客户端套接字
    	int clientAddrLen = sizeof(clientAddr);//套接字结构体长度
    
    	int ret = 0;
    	ret = WSAStartup(MAKEWORD(2, 2), &wd);//开始加载socket2的动态库信息,并返回在wd中
    
    	if (ret != 0)
    	{
    		cout << "初始化socket失败" << endl;
    		return;
    	}
    
    	service = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//tcp类型的socket
    	if (service == INVALID_SOCKET)
    	{
    		cout << "socket error" << endl;
    		return;
    	}
    
    	//绑定IP和端口
    	sin.sin_family = AF_INET;
    	sin.sin_addr.S_un.S_addr = INADDR_ANY;
    	sin.sin_port = htons(8888);
    	if (bind(service, (SOCKADDR *)&sin, sizeof(sin)) == SOCKET_ERROR)
    	{
    		cout << "socket error" << endl;
    		return;
    	}
    
    	//开始监听
    	if (listen(service, 5) == SOCKET_ERROR)
    	{
    		cout << "socket error" << endl;
    		return;
    	}
    
    	//循环接收数据
    	while (true)
    	{
    		cout << "wait connect please.......\n";
    		client = accept(service, (SOCKADDR *)&clientAddr, &clientAddrLen);//clientAddrLen一定要有初始化值
    		if (client == INVALID_SOCKET)
    		{
    			cout << "accept error" << endl;
    			return;
    		}
    		cout << "have an client connect \n";
    
    		if ((revDataLen = recv(client, revData, 255, 0)) > 0)
    		{
    			revData[revDataLen] = 0;//数据截断\0
    			cout << revData << endl;
    		}
    
    		char *sendData = "hello client, I am TCP Service\n";
    		send(client, sendData, strlen(sendData), 0);
    		closesocket(client);
    	}
    
    	closesocket(service);
    	WSACleanup();//对应WSAStartup
    	return;
    }
    
    #include<WinSock2.h>
    #include<iostream>
    using namespace std;
    #pragma comment(lib, "ws2_32.lib")
    
    void ClientTCP()
    {
    	WSADATA wd;
    	SOCKET client;
    	SOCKADDR_IN clientAddr;
    	char sendData[1024];
    	char revData[1024];
    	int revDataLen = sizeof(revData);
    	int ret;
    
    	ret = WSAStartup(MAKEWORD(2, 2), &wd);
    	if (ret != 0)
    	{
    		cout << "socket init error\n";
    		return;
    	}
    
    	client = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    	if (client == INVALID_SOCKET)
    	{
    		cout << "socket error\n";
    		return;
    	}
    
    	clientAddr.sin_family = AF_INET;
    	clientAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
    	clientAddr.sin_port = htons(8888);
    	if (connect(client, (SOCKADDR *)&clientAddr, sizeof(clientAddr)) == SOCKET_ERROR)
    	{
    		cout << "connect error\n";
    		return;
    	}
    
    	cout << "please input send data: ";
    	cin >> sendData;
    
    	send(client, sendData, strlen(sendData), 0);
    
    
    	if ((revDataLen = recv(client, revData, 255, 0)) > 0)
    	{
    		revData[revDataLen] = 0;
    		cout << revData << endl;
    	}
    
    	closesocket(client);
    	WSACleanup();
    	return;
    }
    
    展开全文
  • Winsocket

    2014-07-27 11:36:08
    1.选择winscok协议 2.在录制的OPTIONS里面设置

    1.选择winscok协议

    2.在录制的OPTIONS里面设置encoding为ASCII这样录制出来的东西不会太乱码。


    3.sock协议就是先建立连接,发送包,再关闭连接。就是3个过程。

    4.发的包的内容在data.ws里

    5.server要更新正确。remotehost=admin-PC:8080

    有些没有用的remotehost=admin-PC:1416  要注释掉。因为1416是进程端口。会变的。 只要sock名字一样的都要注释掉。

    6.还有在登录的时候,要注意一下login的server有可能网页显示的是85,但后台显示登录的是86.

    7.回放的时候,因为数据很大可以选择thinktime as record.

    展开全文
  • winsocket

    2013-07-15 19:32:49
    #include #include #include #include #include #pragma comment(lib ,"ws2_32") //接收缓冲区大小  #define RECV_BUFF_SIZE 1000  //发送缓冲区大小  #define SEND_BUFF_SIZE 1000...#define IP_SIZE
    #include <winsock2.h>
    #include <ws2tcpip.h>
    #include <fcntl.h>
    #include <cstdio>
    #include <cstdlib>
    #pragma comment(lib ,"ws2_32")
    //接收缓冲区大小 
    #define RECV_BUFF_SIZE 1000 
    //发送缓冲区大小 
    #define SEND_BUFF_SIZE 1000 
    //IP字符串数组大小 
    #define IP_SIZE 30 
    //listen缓冲区大小 
    #define MAX_SERVICE 5
    WSADATA wsaData;
    void Socket_init(){
    if(WSAStartup(MAKEWORD(2,2),&wsaData)!=NO_ERROR)
    std::cout<<"Error at WSAStartup"<<std::endl;
    }
    void Socket_uinit(){
    WSACleanup();
    }
    class CSocket{
    public:
    SOCKET m_socket;
    SOCKET m_accept_socket;
    int m_port;
    char m_ip[IP_SIZE];
    char m_recv_buff[RECV_BUFF_SIZE];
    char m_send_buff[SEND_BUFF_SIZE];
    SOCKADDR_IN m_addr;
    CSocket(char *ip,int port):m_port(port){
    strcpy(m_ip,ip);
    }
    CSocket(SOCKET sk):m_socket(sk){

    }
    CSocket(){

    }
    ~CSocket(){
    }
    void SetIp(char * ip){
    strcpy(m_ip,ip);
    }
    void SetSocket(SOCKET m){
    m_socket=m;
    }
    void SetPort(int m)
    {
    m_port=m;
    }
    void Init(int mode=1)
    {
    SetModeSocket(mode%2);
    if(m_socket==INVALID_SOCKET)
    {
    std::cout<<"m_socket error"<<std::endl;
    system("PAUSE");
    }
    m_addr.sin_family = AF_INET ; // IPv4
    m_addr.sin_addr.s_addr=inet_addr(m_ip); //服务器IP 
    m_addr.sin_port=htons(m_port); //端口
    memset(m_addr.sin_zero,0,sizeof(m_addr.sin_zero));
    }
    void UnInit()
    {
    closesocket(m_socket);
    }
    virtual void Bind()
    {
    if(bind(m_socket,(SOCKADDR *) &m_addr,sizeof(m_addr))==SOCKET_ERROR)//绑定到本机网络地址 端口 也就是网卡上
    std::cout<<"Error at bind"<<std::endl;
    }
    virtual void Listen()
    {
    if(listen(m_socket,MAX_SERVICE)==SOCKET_ERROR) //开始监听客户端连接请求 
    std::cout<<"Error at listen"<<std::endl;
    }
    virtual void Connect(){
    if(connect(m_socket //socket
    , (SOCKADDR *) &m_addr //地址
      , sizeof(m_addr) //地址大小
      )==SOCKET_ERROR)
    std::cout<<"Error at connect"<<std::endl;
    }
    virtual int Send(char * str)
    {
    if(lstrlen(str)+1>SEND_BUFF_SIZE)
    {
    std::cout<<"发送超过缓存空间"<<std::endl;
    return 0;
    }
    strcpy(m_send_buff,str);
    if(!send(m_socket,m_send_buff,lstrlen(str)+1,0))
    {
    std::cout<<"Error at send"<<std::endl;
    return 0;
    }
    return 1;
    }
    virtual int SendTo(char* str)
    {
    if(lstrlen(str)+1>SEND_BUFF_SIZE)
    {
    std::cout<<"发送超过缓存空间"<<std::endl;
    return 0;
    }
    strcpy(m_send_buff,str);
    if(!sendto(m_socket,m_send_buff,lstrlen(str)+1,0,(SOCKADDR *) &m_addr,sizeof(m_addr)))
    {
    std::cout<<"Error at send"<<std::endl;
    return 0;
    }
    return 1;
    }
    virtual int RecvFrom(SOCKADDR_IN addr)
    {
    addr=m_addr;
    if(recvfrom(m_socket,m_recv_buff,RECV_BUFF_SIZE,0,(SOCKADDR *)&addr,0)<0)
    {
    std::cout<<"Socket错误,客户端可能关闭连接\n"<<std::endl;
    return 0;
    }
    return 1;
    }
    virtual int Recv()
    {
    if(recv(m_socket,m_recv_buff,RECV_BUFF_SIZE,0)<=0)
    {
    std::cout<<"Socket错误,客户端可能关闭连接\n"<<std::endl;
    return 0;
    }
    return 1;
    }
    virtual bool Accept()
    {
    m_accept_socket=accept(m_socket,NULL,NULL);
    return true;
    }
    SOCKET ReturnAccept_socket()
    {
    return m_accept_socket;
    }
    int ReturnPort()
    {
    return m_port;
    }
    char* ReturnIp()
    {
    return m_ip;
    }
    void ShowRecv_buff()
    {
    printf("%s\n",m_recv_buff);
    }
    void ShowSend_buff()
    {
    printf("%s\n",m_send_buff);
    }
    private:
    void SetModeSocket(int mode=1)
    {
    if(mode==1)
    {
    m_socket=socket(AF_INET //IPv4
    , SOCK_STREAM //数据流 
    , IPPROTO_TCP //TCP 协议 
    );
    }
    else
    {
    m_socket=socket(AF_INET //IPv4
    , SOCK_STREAM //数据流 
    , IPPROTO_UDP //UDP 协议 
    );
    }
    }
    };
    展开全文
  • Winsocket模块.rar

    2020-04-05 18:53:26
    Winsocket模块.rar Winsocket模块.rar Winsocket模块.rar Winsocket模块.rar Winsocket模块.rar Winsocket模块.rar
  • 易语言Winsocket模块

    2019-01-22 21:17:56
    本模块使用Winsocket系列API实现,可以实现TCP/UDP的基本通信
  • 易语言Winsocket模块源码,Winsocket模块,申请套接口,销毁套接口,关闭连接,绑定,监听,接受,连接,接收,发送,接收数据报,发送数据报,置缓冲区尺寸,取缓冲区尺寸,UDP置广播模式,UDP取广播模式,置阻塞模式,取客户信息,取...
  • PB9 winsocket

    2012-12-17 16:41:43
    PB9 winsocket
  • winsocket编程

    2010-06-28 22:38:00
    winsocket编程

    // 服务器代码

    #include <Winsock2.h>

    #include <stdio.h>

    void main()

    {

    WORD wVersionRequested; //版本号

    WSADATA  wsaData;        //数据

    int err;

    wVersionRequested = MAKEWORD(1,1);

    err = WSAStartup(wVersionRequested,&wsaData);

    if( err != 0)

    {

    return;

    }

    if(LOBYTE( wsaData.wVersion ) != 1||

    HIBYTE( wsaData.wVersion) != 1)

    {

    WSACleanup();

    return;

    }

    SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); //建立套接字

    SOCKADDR_IN addrSrv; 

    addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

    addrSrv.sin_family=AF_INET;

    addrSrv.sin_port=htons(6000);

    bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));  //绑定端口

    listen(sockSrv,5);   //转换socket套接子为侦听套接子

    SOCKADDR_IN addrClient;

    int len=sizeof(SOCKADDR);

    while(1)   //无限循环

    {

    SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);

    char sendBuf[100];

    sprint(sendBuf,"Welcome %s to http://www.sunxin.org",

    inet_ntoa(addrClient.sin_addr));

    send(sockConn,sendBuf,strlen(sendBuf)+1,0);

    char recvBuf[100];

    recv(sockConn,recvBuf);

    printf("%sn",recvBuf);

    closesocket(sockConn);

    WSACleanup();

    }

    }

    注:这是Server端;File->New->Win32 Console Application,工程名:TcpSrv;然后,File->New->C++ Source File,文件名:TcpSrv;在该工程的SettingLinkObject/library modules项要加入ws2_32.lib

    #include <Winsock2.h>

    #include <stdio.h>

    void main()

    {

    WORD    wVersionRequested;

    WSADATA   wsaData;

    int err;

    wVersionRequested = MAKEWORD(1,1);

    err = WSAStartup(wVersionRequested,&wsaData); //启动winsock Dll

    if( err != 0)

    {

    return;

    }

    if(LOBYTE( wsaData.wVersion ) != 1||

    HIBYTE( wsaData.wVersion) != 1)

    {

    WSACleanup();

    return;

    }

    SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);

    SOCKADDR_IN addrSrv;
    addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

    addrSrv.sin_family=AF_INET;

    addrSrv.sin_port = htons(6000);

    connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

    char recvBuf[100];

    recv(sockClient,recvBuf,100,0);

    printf("%sn",recvBuf);

    send(sockClient,"This is zhangsan",strlen("This is zhangsan")+1,0);

    closesocket(sockClient);

    WSACleanup();

    }

    注:这是Client端;File->New->Win32 Console Application,工程名:TcpClient;然后,File->New->C++ Source File,文件名:TcpClient;同理,在该工程的SettingLinkObject/library modules项要加入ws2_32.lib

    展开全文
  • 截获WINSOCKET

    2011-10-13 11:45:00
    TCP/IP协议是目前各网络操作系统主要的通讯协议,也是 INTERNET的通讯协议,WIN95/NT平台提供了TCP/IP协议的实现函数库WINSOCKET(WSOCKET.DLL)动态库,因而可以利用WINSOCKET 编写基于TCP/IP协议的应用系统。...
  • QT使用winsocket

    千次阅读 2017-01-21 13:56:53
    QT自带network模块提供网络功能,这里介绍QT下如何使用winsocket来开发网络程序。 在项目工程文件中配置 LIBS += -lws2_32 在源代码文件中添加头文件引用 #include 然后编写源代码 WSADATA...
  • C#winsocket的FTP客户端的实现。开发环境:VS2010。可无错误运行。
  • win32 sdk实现基于winsocket的进程通讯,主要两个exe,一个exe通过socket发送请求给另一个exe接受来达到控制其窗口客户端背景色
  • WinSocket API

    千次阅读 2012-05-30 00:53:27
    WinSocket API —— TCP\IP连接 要进行网络通信编程,就要用到socket(套接字)。套接字代表一个通信端口,有地址,有端口号,可连接(按类型),可收,可发。 要进行socket编程,要为工程导入库文件,添加...
  • WinSOCKET五种模型_VS2015

    2016-09-05 09:28:18
    WinSOCKET五种模型_VS2015 深圳C/C++/Java学习培训群 3260 23167
  • visual c++调用WinSocket开发TCP通信程序,Client和Server通讯程序.zip vc+WinSocket开发TCP通信程序
  • PB Winsocket完整实例

    热门讨论 2009-09-17 12:20:32
    PB Winsocket最新完整实例。在PB10下调试通过。
  • Winsocket模块

    2015-09-20 11:39:26
    由个人独立开发,请勿盗版,谢谢大家的支持,这款模块可以帮大家解决很多的问题
  • Winsocket通信测试

    千次阅读 2015-03-30 18:08:04
    Winsocket通信初调试在学习网络编程之前,我们需要对Tcp/ip协议栈有个清楚地了解。Tcp/ip协议栈分以下五层,也有分成7层 5、应用层 4、传输层 3、网络层 2、数据链路层 1、物理层 物理层是实实在在的物理链路,...
  • IPV6 TCP的WinSocket实现。详细描述: http://blog.csdn.net/synfirecloud/article/details/18355741
  • MFC WinSocket编程

    千次阅读 2013-03-08 14:23:12
    MFC WinSocket编程  MFC提供了两个高级类:CAsyncSocket和CSocket。  CAsyncSocket对winsocket API进行了一对一的包装,是相对低级的一个类,需要编程者知道更多的细节。  CSocket继承了CAsyncSocket,...
  • MFC局域网的winsocket编程

    千次阅读 2018-05-28 20:27:30
    MFC局域网的winsocket编程 1.功能简介 客户端: 与服务器建立连接 发送消息到服务器 断开与服务器的连接 服务器端: 接受客户端的请求 将某个客户端发来的消息广播到其他的在线客户端 ...
  • c++ winsocket (七)

    2020-02-09 10:59:44
    一 问题 1 打开一个客户端不停地... 回答: 因为 winsocket默认是阻塞的,accept() ,receive是阻塞函数,当receive没有收到 数据时,程序不会继续往下执行,当socket缓冲区的数据满了,会阻止客户端发送数据。 ...
  • vb winsocket 多线程

    热门讨论 2008-05-23 21:15:12
    vb winsocket 多线程服务器端,国外的一个,不错
  • WinSocket编程获得计算机MAC地址 查看本机的MAC地址
  • winsocket.zip

    2020-05-11 15:56:51
    windows下的socket已经全部封装好,拿来即可使用,下载不用积分,本着开源的态度,做好每一件事,相互分享,相互学习

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 799
精华内容 319
关键字:

winsocket