c语言套接字编程代码(10+20 用c语言编程)

本文目录
10+20 用c语言编程
假设用int型变量s来存储10+20的和值,那么用c语言表示这一过程的代码是:int s;s=10+20;printf("%d",s);。
C语言套接字编程实现通信
给你两个简单示例参考下,先运行服务端,再运行客服端,可以实现两者之间的通信。
服务端:
#include 《WINSOCK2.H》
#include 《iostream》
using namespace std;
#pragma comment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( );
return;
}
SOCKET listenfd = socket(AF_INET,SOCK_STREAM,0);
if (listenfd == INVALID_SOCKET)
{
cout《《"socket failed with err code="《《WSAGetLastError()《《endl;
return;
}
sockaddr_in servaddr;
memset(&servaddr,0,sizeof(sockaddr_in));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(5555);
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
// servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
int opt = 1;
int ret = setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,(const char*)&opt,sizeof(opt));
if (ret == SOCKET_ERROR)
{
cout《《"setsockopt failed with err code="《《WSAGetLastError()《《endl;
return;
}
ret = bind(listenfd,(sockaddr*)&servaddr,sizeof(servaddr));
if (ret == SOCKET_ERROR)
{
cout《《"bind failed with err code="《《WSAGetLastError()《《endl;
return;
}
ret = listen(listenfd,10);
if (ret == SOCKET_ERROR)
{
cout《《"listen failed with err code="《《WSAGetLastError()《《endl;
return;
}
sockaddr_in peeraddr;
int len = sizeof(sockaddr_in);
// while (1)
// {
SOCKET connSocket = accept(listenfd,(sockaddr*)&peeraddr,&len);
if (connSocket == INVALID_SOCKET)
{
cout《《"accept failed with err code="《《WSAGetLastError()《《endl;
return;
}
// 开辟一个线程
cout《《"peer ip="《《endl;
send(connSocket,"welcome to by",strlen("welcome to by"),0);
char buf;
while (1)
{
memset(buf,0,sizeof(buf));
recv(connSocket,buf,1024,0);
cout《《buf《《endl;
send(connSocket,buf,strlen(buf),0);
}
}
客户端:
#include 《WINSOCK2.H》
#include 《iostream》
using namespace std;
#pragma comment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( );
return;
}
SOCKET sock = socket(AF_INET,SOCK_STREAM,0);
if (sock == INVALID_SOCKET)
{
cout《《"socket failed with err code="《《WSAGetLastError()《《endl;
return;
}
sockaddr_in servaddr;
memset(&servaddr,0,sizeof(sockaddr_in));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(5555);
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
int ret = connect(sock,(sockaddr*)&servaddr,sizeof(servaddr));
if (ret == SOCKET_ERROR)
{
cout《《"connect failed with err code="《《WSAGetLastError()《《endl;
return;
}
char recvbuf = {0};
recv(sock,recvbuf,1024,0);
cout《《recvbuf《《endl;
char sendbuf = {0};
while (1)
{
memset(sendbuf,0,sizeof(sendbuf));
memset(recvbuf,0,sizeof(recvbuf));
cin》》sendbuf;
send(sock,sendbuf,strlen(sendbuf),0);
recv(sock,recvbuf,1024,0);
cout《《recvbuf《《endl;
}
}

更多文章:
parseint最大长度(如何用js控制图片的图大宽度或是最大高度)
2026年10月12日 03:10
自己架设游戏服务器(我有游戏的客户端和服务端,想在自己的电脑架设服务器,不需要联网,)
2026年10月11日 23:20
buffer java(Java SE用NIO(New IO)里面的Buffer类有什么好处适合在什么场合使用)
2026年10月11日 12:40







