多种语言socket编程集锦—win32

原文 http://www.blogjava.net/huyi2006/articles/263831.html

借此地方整理以下socket编程的多种语言的实现,socket可以跨平台的通信,因此多语言、多平台下的实现有必要了解的。代码都是源自网上,感谢网友的分享。

socket编程在windows下的C语言实现,dev C++下编译通过
编译时设置编译选项 工具-->编译选项-->编译器,勾选在连接器命令行加入以下命令,在对话框中填-lwsock32
//server.c
#include <stdio.h>
#include <Winsock2.h>
int 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);
    
    SOCKADDR_IN addrClient;
    int len=sizeof(SOCKADDR);
    while(1)
    {
        SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
        char sendBuf[50];
        sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));
        send(sockConn,sendBuf,strlen(sendBuf)+1,0);
        char recvBuf[50];
        recv(sockConn,recvBuf,50,0);
        printf("%s\n",recvBuf);
        closesocket(sockConn);
    }
}

//客户端代码
#include <stdio.h>
#include <Winsock2.h>
int 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 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));
    send(sockClient,"hello",strlen("hello")+1,0);
    char recvBuf[50];
    recv(sockClient,recvBuf,50,0);
    printf("%s\n",recvBuf); 
    closesocket(sockClient);
    WSACleanup();
}

时间: 2025-01-31 01:59:50

多种语言socket编程集锦—win32的相关文章

linux c语言 socket编程 recv每次收到一样的数据

问题描述 linux c语言 socket编程 recv每次收到一样的数据 #include #include #include #include #include #include #include #include #include int main() { int so=socket(AF_INET,SOCK_STREAM,0),r; sockaddr_in addr; hostent hp; hp=gethostbyname("www.csdn.net"); addr.sin_

c语言 socket编程-socket 编程问题(C语言)

问题描述 socket 编程问题(C语言) 客户端将要处理的文件/数据传输到服务器端,服务器端对此文本文件进行处理,并将结果传输给客户端,客户端进行显示. 我初学socket编程,请大家多指教.使用C语言 解决方案 没看懂你想问什么的 基于socket 的网络编程其实是很简单的,而且看你的意思是想使用C/S 架构的,因为是属于传输层面的东西,自然用到tcp.UDP ,很久没写这些东西了,可以告诉你,顺便回忆一下: 下面把网络连接的搭建过程给你说一下吧: 首先是client: 1.socket -

C语言socket编程开发应用示例_C 语言

实现步骤: 1. Server端 复制代码 代码如下: #include <stdio.h>                   //用于printf等函数的调用#include <winsock2.h>                //Socket的函数调用 #pragma comment (lib, "ws2_32")      //C语言引用其他类库时,除了.h文件外,还要加入对应的lib文件(这个不同于C#) 复制代码 代码如下: int main()

c语言 socket编程-C语言网络编程之listen函数的实现

问题描述 C语言网络编程之listen函数的实现 请教: listen函数方法实现,函数体是什么 我抄了一段代码为什么执行到listen函数这儿就不往下执行了也不报错

用C语言进行最基本的socket编程_C 语言

什么是socket 你经常听到人们谈论着 "socket",或许你还不知道它的确切含义.现在让我告诉你:它是使用 标准Unix 文件描述符 (file descriptor) 和其它程序通讯的方式.什么?你也许听到一些Unix高手(hacker)这样说过:"呀,Unix中的一切就是文件!"那个家伙也许正在说到一个事实:Unix 程序在执行任何形式的 I/O 的时候,程序是在读或者写一个文件描述符.一个文件描述符只是一个和打开的文件相关联的整数.但是(注意后面的话),

详解Linux的SOCKET编程_C 语言

本篇文章对Linux的SOCKET编程进行了详细解释文章后面分享了一个编程实例供大家学习. 1. 网络中进程之间如何通信 进程通信的概念最初来源于单机系统.由于每个进程都在自己的地址范围内运行为保证两个相互通信的进程之间既互不干扰又协调一致工作操作系统为进程通信提供了相应设施如 UNIX BSD有管道pipe.命名管道named pipe软中断信号signal UNIX system V有消息message.共享存储区shared memory和信号量semaphore)等. 他们都仅限于用在本

C++ POCO库中文编程参考指南(8) 丰富的Socket编程

1 POCO 中的 Socket POCO 中有 丰富的 Socket 封装.其继承关系如下: 本文暂且只介绍 StreamSocket.ServerSocket.DatagramSocket 2 Poco::Net::ServerSocket ServerSocket 是一个封装层次比较低(low level)的 Socket,其使用的是 TCP 连接.在实际的 Server 中推荐使用 TCPServer 或 Reactor 框架.下面是例程: #include "Poco/Net/Serv

c语言简单编程

问题描述 c语言简单编程 Input array size N (1~20)Using Two-Dimensional array输入数组大小氮(1 - 20)二维数组 解决方案 楼上站着说话不腰疼.这道题只给思路,但是你那个最关键的思路就没给.我以为自己十分钟可以搞定这题,结果弄了一个小时...给出经过测试的C语言源码如下: #include ""stdio.h""#include ""stdlib.h""#define N

c语言socket多线程编程限制客户端连接数

      这篇文章主要介绍了c语言socket多线程编程,可以限制客户端连接数,大家参考使用吧      先上一些多线程需要使用的函数定义:     代码如下: DWORD WINAPI ProcessClientRequests(LPVOID lpParam)  //新线程将会执行的函数定义 {       return 0; }   HANDLE handler=CreateThread(NULL, 0, ProcessClientRequests, &clientsocket, 0, N