简单的socket编程入门示例_C语言教程-查字典教程网
简单的socket编程入门示例
简单的socket编程入门示例
发布时间:2016-12-28 来源:查字典编辑
摘要:功能简单实现client输入内容发送到server端输出复制代码代码如下:#include#include#include#pragmaco...

功能简单实现client输入内容发送到server端输出

复制代码 代码如下:

#include <stdio.h>

#include <iostream>

#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")

using namespace std;

int main()

{

// 初始化 Winsock.

WSADATA wsaData;

int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );

if ( iResult != NO_ERROR )

{

cout<<"failed to initialize!"<<endl;

return 0;

}

// 建立socket socket.

SOCKET client;

client = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );

if ( client == INVALID_SOCKET )

{

cout<<"failed to create client socket!"<<endl;

WSACleanup();

return 0;

}

// 连接到服务器.

sockaddr_in clientService;

clientService.sin_family = AF_INET;

clientService.sin_addr.s_addr = inet_addr( "127.0.0.1" );

clientService.sin_port = htons( 13579 );

if ( connect( client, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR)

{

cout<<"Failed to connect"<<endl;

closesocket(client);

WSACleanup();

return 0;

}

// 发送数据.

int bytesSent;

char sendbuf[4096] = "Client: Sending data.";

while(TRUE)

{

bytesSent = send( client, sendbuf, strlen(sendbuf), 0 );

gets_s(sendbuf, 4096);

}

closesocket(client);

WSACleanup();

return 0;

}

复制代码 代码如下:

#include <iostream>

#include <WinSock2.h>

#pragma comment(lib, "ws2_32.lib")

using namespace std;

int main()

{

WSADATA wsaData;

int iInit = WSAStartup(MAKEWORD(2, 2), &wsaData);

if (iInit != NO_ERROR)

{

cout<<"failed to initialize!"<<endl;

return 0;

}

SOCKET server = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (server == INVALID_SOCKET)

{

cout<<"failed to create server socket!"<<endl;

WSACleanup();

return 0;

}

sockaddr_in bindinfo;

bindinfo.sin_family = AF_INET;

bindinfo.sin_addr.s_addr = inet_addr( "127.0.0.1" );

bindinfo.sin_port = htons(13579);

if ( bind( server, (SOCKADDR*) &bindinfo, sizeof(bindinfo) ) == SOCKET_ERROR )

{

cout<<"failed to bind!"<<endl;

closesocket(server);

WSACleanup();

return 0;

}

//listen

if (listen(server, 1) == SOCKET_ERROR) {

cout<<"listen failed"<<endl;

closesocket(server);

WSACleanup();

return 0;

}

//accept and block

SOCKET socketWork = accept(server, NULL, NULL);

if (socketWork == INVALID_SOCKET) {

wprintf(L"accept failed with error: %ldn", WSAGetLastError());

closesocket(server);

WSACleanup();

return 0;

}

int byteRecv = SOCKET_ERROR;

char recvBuf[4096] = "";

while(TRUE)

{

byteRecv = recv(socketWork, recvBuf, 4096, 0);

if (byteRecv == 0)

{

break;

}

recvBuf[byteRecv] = 0;

cout<<recvBuf<<endl;

}

closesocket(server);

WSACleanup();

return 0;

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C语言学习
    热门C语言学习
    编程开发子分类