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;
}
}

更多文章:
免费photoshop 中文版下载(哪里可以下载免费的ps软件)
2026年10月13日 13:00
centos7退出命令(centos7 如何退出if show)
2026年10月13日 12:10
怎么免费做一个自己的网站(建立自己的网站要钱吗怎么建立一个免费网站呢)
2026年10月13日 09:20
handler的使用(Android中Handler的主要作用是什么通俗点,初学)
2026年10月13日 07:50
python list方法(python中List添加、删除元素的几种方法)
2026年10月13日 04:40
sql触发器的主要作用是什么(sql server 触发器有什么用)
2026年10月13日 03:30
java培训机构安排就业吗(java课程培训机构分享计算机专业毕业学Java好就业吗)
2026年10月13日 01:50
apache服务器的配置(在apache的配置文件中,什么用于加载文件)
2026年10月13日 00:10




