C / C++
C / C++ network programming
Show IP Address for all networking devices *Linux*
How to List all devices info on your WLAN /router Programmatically in C#
List of all ip address (i.e devices) present in a local area network
Ping in C
Ping: Raw Sockets Method
IcmpSendEcho function
microsoft / Windows-classic-samples - Ping.cpp
Network Programming for Microsoft Windows (PDF)
Windows Sockets 2
Creating a Basic Winsock Application
SDK build environment
"how do i ensure that the build environment refers to the Include, Lib, and Src directories of the Microsoft
Windows Software Development Kit (SDK) or the earlier Platform Software Development Kit (SDK)?
Assuming you are talking about the IDE, use Tools + Options, Projects and Solutions, VC++ Directories"
server.c:
#include <unistd.h>
#include <stdio.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <string.h>
#define PORT 8080
int main(int argc, char const *argv[])
{
int server_fd, new_socket, valread;
struct sockaddr_in address;
int opt = 1;
int addrlen = sizeof(address);
char buffer[1024] = {0};
char *hello = "Hello from server";
// Creating socket file descriptor
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0)
{
perror("socket failed");
exit(EXIT_FAILURE);
}
// Forcefully attaching socket to the port 8080
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt)))
{
perror("setsockopt");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons( PORT );
// Forcefully attaching socket to the port 8080
if (bind(server_fd, (struct sockaddr *)&address, sizeof(address))<0)
{
perror("bind failed");
exit(EXIT_FAILURE);
}
if (listen(server_fd, 3) < 0)
{
perror("listen");
exit(EXIT_FAILURE);
}
if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen))<0)
{
perror("accept");
exit(EXIT_FAILURE);
}
valread = read( new_socket , buffer, 1024);
printf("%s\n",buffer );
send(new_socket , hello , strlen(hello) , 0 );
printf("Hello message sent\n");
return 0;
}
client.c:
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#define PORT 8080
int main(int argc, char const *argv[])
{
int sock = 0, valread;
struct sockaddr_in serv_addr;
char *hello = "Hello from client";
char buffer[1024] = {0};
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
printf("\n Socket creation error \n");
return -1;
}
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(PORT);
// Convert IPv4 and IPv6 addresses from text to binary form
if(inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr)<=0)
{
printf("\nInvalid address/ Address not supported \n");
return -1;
}
if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
{
printf("\nConnection Failed \n");
return -1;
}
send(sock , hello , strlen(hello) , 0 );
printf("Hello message sent\n");
valread = read( sock , buffer, 1024);
printf("%s\n",buffer );
return 0;
}
Compiling:
gcc client.c -o client
gcc server.c -o server
Output:
Client:Hello message sent
Hello from server
Server:Hello from client
Hello message sent
#include <iostream>
#include <winsock2.h>
using namespace std;
int main(int argc, char *argv[])
{
WSADATA wsaData;
int starterr = WSAStartup(MAKEWORD(2,2), &wsaData);
if (starterr != 0) {
cout << "WSADATA startup has failed!" << endl;
cout << "Error Code: " << WSAGetLastError() << endl;
system("pause >nul");
WSACleanup();
return 0;
}
cout << "WSADATA Startup Successful!" << endl;
SOCKET mysock = socket(AF_INET, SOCK_STREAM, 0);
if (mysock == INVALID_SOCKET) {
cout << "Socket Creation Failed!" << endl;
cout << "Error Code: " << WSAGetLastError() << endl;
system("pause >nul");
WSACleanup();
return 0;
}
cout << "Socket Creation Successful!" << endl;
// Code mod. allowing user to imput address
const char ans;
cout << "Please input server address: " << endl;
cin>>ans;
sockaddr_in sin;
sin.sin_port = htons(4080);
sin.sin_addr.s_addr = inet_addr(ans);
sin.sin_family = AF_INET;
if (connect(mysock,(sockaddr*)&sin, sizeof(sin)) == INVALID_SOCKET) {
cout << "Socket Connection Failed" << endl;
cout << "Error Code: " << WSAGetLastError() << endl;
system("pause >nul");
closesocket(mysock);
WSACleanup();
return 0;
}
cout << "Socket successfully connected to " << ans << "!" << endl;
char buf[200];
recv(mysock, buf, sizeof(buf), 0);
cout << buf;
cout << "\nClosing connection to server!" << endl;
WSACleanup();
closesocket(mysock);
return 0;
}
firedraco:
const char ans;
You can't have it const if you want the user to be able to input stuff. Also, you need it to be a pointer if you want to store a C-string. Finally, you'll need to allocate memory for the string.
I'd suggest just using an std::string and .c_str() instead though.
beginning:
const char ans;
cout<<"Please input server address: " << endl;
cin >> ans;
//here error
may be this;
char ans[20] = {0};
cout << "Please input server address: " << endl;
cin >> ans;