server.c代码如下:
#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int sd, client, bytes_read;
struct sockaddr_in server;
char buf[512];
// 1. Open a socket
sd = socket(PF_INET, SOCK_STREAM, 0);
if (sd < 0) {
puts("Could not create socket");
return -1;
}
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_port = htons(8000);
// 2. Bind to a address(and port)
if (bind(sd, (struct sockaddr *)&server, sizeof(server)) < 0) {
puts("Bind failed");
close(sd);
return -1;
}
puts("Bind done");
// 3. Listen for incoming connections
listen(sd, 8);
while (1) {
// 4. Accept connections
puts("Waiting for incoming connections...");
client = accept(sd, NULL, NULL);
if (client < 0) {
puts("Accept failed");
}
puts("Connection accepted");
// 5. Read/Write
bytes_read = recv(client, buf, sizeof(buf), 0);
if (bytes_read > 0) {
puts(buf);
}
close(client);
}
close(sd);
return 0;
}
client.c代码如下:
#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
struct sockaddr_in server;
int sd;
char *message;
// 1. Create a socket
sd = socket(PF_INET, SOCK_STREAM, 0);
if (sd < 0) {
printf("Could not create socket");
return -1;
}
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_family = AF_INET;
server.sin_port = htons(8000);
// 2. Connect to remote server
if (connect(sd, (struct sockaddr *)&server, sizeof(server)) < 0) {
puts("Connect error");
close(sd);
return -1;
}
puts("Connected");
// 3. Send some data
message = "Hello World!";
if (send(sd, message, strlen(message)+1, 0) < 0) {
puts("Send failed");
close(sd);
return -1;
}
puts("Send done");
close(sd);
return 0;
}