当前位置:首页 » 编程软件 » csocket编程

csocket编程

发布时间: 2022-01-23 20:44:35

‘壹’ socket编程 c语言

sender 没有看到 i 打印,是由于你没有加换行,由于标准输出是行缓冲,所以不会马上打印,而是要等遇到 \n 或者进程结束才会打印。你可以写成 printf("%d\n"); 就能看到发送方的打印。

接收方也可以加上printf来打印。

这么简单的程序,用gdb自己调试也可以。

‘贰’ C语言Socket编程问题(互相通信)

客户端与服务器建立连接
客户端调用connect函数时,已经知道服务器的IP地址以及端口号
服务器中accept返回的套接字中,包含客户端的IP地址以及端口号
建立的连接是相互的,所以可以互通消息。

‘叁’ 在windows下用C语言如何实现socket网络编程,需要用到哪些头文件或者库

需要用到的头文件包含:

#include <winsock2.h>

#include <windows.h>

与Linux环境下socket编程相比,windows环境多了一个步骤:启动或者初始化winsock库

Winsock,一种标准API,一种网络编程接口,用于两个或多个应用程序(或进程)之间通过网络进行数据通信。具有两个版本:

Winsock 1:

Windows CE平台支持。

头文件:WinSock.h

库:wsock32.lib

Winsock 2:

部分平台如Windows CE貌似不支持。通过前缀WSA可以区别于Winsock 1版本。个别函数如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都属于Winsock 1.1规范的函数;

头文件:WinSock2.h

库:ws2_32.lib

mswsock.h用于编程扩展,使用时必须链接mswsock.dll

(3)csocket编程扩展阅读

winsock库的加载与卸载:

加载:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);

加载成功,返回值为0。

WORD wVersionRequested:加载的winsock版本,使用宏MAKEWORD(x, y),x表示高字节,y表示低字节。然而使用时MAKEWORD(2, 2)。高字节与低字节相同~~

LPWSADATA lpWSAData:WSADATA结构的指针,传入参数后,系统帮助我们填充版本信息。有兴趣的可以看看结构体内容,不过基本用不着。

卸载:int WSACleanup(void);比起加载,卸载的函数真是轻松愉快。

‘肆’ C语言socket编程

send用户名和密码,然后再服务器判断这段字符串的账号密码是否符合,然后客户端recv,如果recv的字符串是登录成功,才进行下面操作.否则就提示用户名和密码有误.

‘伍’ 在windows下,如何用纯C语言实现socket网络编程

mfc只是对socket进行了一些封装,大部分人做网络编程都是用的原始的socket,比如如下接口都可以在c下进行调用
1.socket()
2.bind()
3.connect()
4.listen()
5.accept()
6.send() 和recv()
7.sendto() 和recvfrom()
8.close() 和shutdown()
9.getpeername()
10.gethostname()
这些接口是在Winsock2.h中定义的不是在mfc中定义的,你只需要包含Winsock2.h头文件和Ws2_32.lib库就可以了。

‘陆’ C语言socket编程要怎么实现服务器可以发消息给客户端

先要理解socket是什么?
简单的说socket是一个全双工的通信通道,
即使用TCP或者UDP通信时均可以在发送消息的同时接受消息,
它不区分是否是服务器。
根据这个概念你的问题就很好回答。
》当客户端与服务器连接后。有什么方法使服务器可以随时随地发消息给客户端?
》我现在只能。客户端发个消息给服务器。服务器才能发个消息给客户端。也就是说客户端不发消息。服务器就没法发消息给客户端。
》求大牛给个思路。当连接后。客户端与服务器双方可以随时随地通信!
使用多线程,一个维持接受逻辑,一个维持送信逻辑,即可完成同时接受及发送。
客户端及服务器端均做上述设置。
而你的做法是在一个线程中执行接受与送信,因此只能按照顺序逻辑完成接收与送信。
关键点是多线程。

‘柒’ c++csocket编程 5种模式

1. 构造CSocket对象,如以下的形式:

CSocket Serversocket;

2. 利用CSocket对象的Create()函数创建Windows Socket,Create()函数会调用Bind()函数将此Socket绑定到指定的地址上,其原型为:

BOOL Create (UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, LPCTSTR lpszSocketAddress = NULL);

其中nSocketPort参数指定通信连接的端口号,端口号可以任意指定,但最好不要使用系统默认的一些端口号,例如21是FTP文件传输使用的端口号;

3. Socket创建完毕之后,在服务器端进行监听客户的连接请求,使用如下的代码:

ServerSocket.Listen();

紧接着对于客户端而言,将会调用Connect()函数向服务器发送连接请求,而对于服务器而言,则会调用Accept()函数对客户端发送过来的请求连接进行接受和处理,Accept()函数可以创建一个和监听Socket相同的连接Socket来处理客户的请求,二原来的Socket仍然处于监听状态,使用的形式如下。

客户端:

ClientSocket.Connect(服务器的地址,服务器的端口号);

服务器端:

CSocket ReceiveSocket;

ServerSocket.Accept(连接Socket,客户的地址结构,客户地址结构的长度)

4. 对于数据流服务器类型而言,服务器和客户各自通过调用函数来完成数据的发送和接受,使用如下的语句:

ServerReceive.Receive(缓冲区,缓冲区的长度,接受标志位);

Client.Send(缓冲区,缓冲区的长度,发送标志位);

5. 在客户端与服务器端的数据传输完成之后,调用下述语句,释放Socket所占有的资源。

ServerSocket.Close();

ReceiveSocket.Close();

ClientSocket.Close();

‘捌’ C 语言 C++ socket编程

可以接受!服务端可以同时连接多个客户端,这样看服务端程序是如何实现的!一般会有上限,太多就要延时等待!如果同时连接的客户端不是太多,会分时复用!

‘玖’ C语言socket编程怎么实现2个客户端之间通信

  1. 网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。

  2. 下面用Socket实现一个windows下的c语言socket通信例子,这里我们客户端传递一个字符串,服务器端进行接收。

    【服务器端】
    #include"stdafx.h"
    #include<stdio.h>
    #include<winsock2.h>
    #include<winsock2.h>
    #defineSERVER_PORT5208//侦听端口
    voidmain()
    {
    WORDwVersionRequested;
    WSADATAwsaData;
    intret,nLeft,length;
    SOCKETsListen,sServer;//侦听套接字,连接套接字
    structsockaddr_insaServer,saClient;//地址信息
    char*ptr;//用于遍历信息的指针
    //WinSock初始化
    wVersionRequested=MAKEWORD(2,2);//希望使用的WinSockDLL的版本
    ret=WSAStartup(wVersionRequested,&wsaData);
    if(ret!=0)
    {
    printf("WSAStartup()failed! ");
    return;
    }
    //创建Socket,使用TCP协议
    sListen=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    if(sListen==INVALID_SOCKET)
    {
    WSACleanup();
    printf("socket()faild! ");
    return;
    }
    //构建本地地址信息
    saServer.sin_family=AF_INET;//地址家族
    saServer.sin_port=htons(SERVER_PORT);//注意转化为网络字节序
    saServer.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//使用INADDR_ANY指示任意地址

    //绑定
    ret=bind(sListen,(structsockaddr*)&saServer,sizeof(saServer));
    if(ret==SOCKET_ERROR)
    {
    printf("bind()faild!code:%d ",WSAGetLastError());
    closesocket(sListen);//关闭套接字
    WSACleanup();
    return;
    }

    //侦听连接请求
    ret=listen(sListen,5);
    if(ret==SOCKET_ERROR)
    {
    printf("listen()faild!code:%d ",WSAGetLastError());
    closesocket(sListen);//关闭套接字
    return;
    }

    printf("Waitingforclientconnecting! ");
    printf("Tips:Ctrl+ctoquit! ");
    //阻塞等待接受客户端连接
    while(1)//循环监听客户端,永远不停止,所以,在本项目中,我们没有心跳包。
    {
    length=sizeof(saClient);
    sServer=accept(sListen,(structsockaddr*)&saClient,&length);
    if(sServer==INVALID_SOCKET)
    {
    printf("accept()faild!code:%d ",WSAGetLastError());
    closesocket(sListen);//关闭套接字
    WSACleanup();
    return;
    }
    charreceiveMessage[5000];
    nLeft=sizeof(receiveMessage);
    ptr=(char*)&receiveMessage;
    while(nLeft>0)
    {
    //接收数据
    ret=recv(sServer,ptr,5000,0);
    if(ret==SOCKET_ERROR)
    {
    printf("recv()failed! ");
    return;
    }
    if(ret==0)//客户端已经关闭连接
    {
    printf("Clienthasclosedtheconnection ");
    break;
    }
    nLeft-=ret;
    ptr+=ret;
    }
    printf("receivemessage:%s ",receiveMessage);//打印我们接收到的消息。

    }
    //closesocket(sListen);
    //closesocket(sServer);
    //WSACleanup();
    }
    【客户端】
    #include"stdafx.h"
    #include<stdio.h>
    #include<stdlib.h>
    #include<winsock2.h>
    #defineSERVER_PORT5208//侦听端口
    voidmain()
    {
    WORDwVersionRequested;
    WSADATAwsaData;
    intret;
    SOCKETsClient;//连接套接字
    structsockaddr_insaServer;//地址信息
    char*ptr;
    BOOLfSuccess=TRUE;
    //WinSock初始化
    wVersionRequested=MAKEWORD(2,2);//希望使用的WinSockDLL的版本
    ret=WSAStartup(wVersionRequested,&wsaData);
    if(ret!=0)
    {
    printf("WSAStartup()failed! ");
    return;
    }
    //确认WinSockDLL支持版本2.2
    if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2)
    {
    WSACleanup();
    printf("InvalidWinSockversion! ");
    return;
    }
    //创建Socket,使用TCP协议
    sClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    if(sClient==INVALID_SOCKET)
    {
    WSACleanup();
    printf("socket()failed! ");
    return;
    }
    //构建服务器地址信息
    saServer.sin_family=AF_INET;//地址家族
    saServer.sin_port=htons(SERVER_PORT);//注意转化为网络节序
    saServer.sin_addr.S_un.S_addr=inet_addr("192.168.1.127");
    //连接服务器
    ret=connect(sClient,(structsockaddr*)&saServer,sizeof(saServer));
    if(ret==SOCKET_ERROR)
    {
    printf("connect()failed! ");
    closesocket(sClient);//关闭套接字
    WSACleanup();
    return;
    }


    charsendMessage[]="hellothisisclientmessage!";
    ret=send(sClient,(char*)&sendMessage,sizeof(sendMessage),0);
    if(ret==SOCKET_ERROR)
    {
    printf("send()failed! ");
    }
    else
    printf("clientinfohasbeensent!");
    closesocket(sClient);//关闭套接字
    WSACleanup();
    }
热点内容
非凡任务电影ftp 发布:2024-12-24 20:30:21 浏览:243
ipad设置文件夹密码 发布:2024-12-24 20:07:52 浏览:533
幻塔h201避难所密码锁是多少 发布:2024-12-24 20:01:53 浏览:853
电脑配置怎么看硬盘 发布:2024-12-24 20:00:22 浏览:866
青海云服务器租用公司 发布:2024-12-24 19:59:42 浏览:819
数据库记录排序 发布:2024-12-24 19:50:06 浏览:600
byte转stringpython 发布:2024-12-24 19:48:30 浏览:668
战地一配置低显示器分辨率怎么调 发布:2024-12-24 19:48:19 浏览:428
如何判断脚本是否开了 发布:2024-12-24 19:47:32 浏览:655
安卓怎么退出纯净模式 发布:2024-12-24 19:31:37 浏览:309