server端
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>
#define MAXPENDING 5 /* Max connection requests */
#define BUFFSIZE 32
#define SERVER_PORT 6000
void Die(char *mess) { perror(mess); exit(1); }
void HandleClient(int sock) {
char buffer[BUFFSIZE];
int received = -1;
/* Send bytes and check for more incoming data in loop */
while ((received = recv(sock, buffer, BUFFSIZE, 0)) > 0) {
/* Send back received data */
if (send(sock, buffer, received, 0) != received) {
Die("Failed to send bytes to client");
}
}
close(sock);
}
int main(int argc, char *argv[]) {
int serversock, clientsock;
struct sockaddr_in echoserver, echoclient;
/* Create the TCP socket */
if ((serversock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
Die("Failed to create socket");
}
/* Construct the server sockaddr_in structure */
memset(&echoserver, 0, sizeof(echoserver)); /* Clear struct */
echoserver.sin_family = AF_INET; /* Internet/IP */
echoserver.sin_addr.s_addr = htonl(INADDR_ANY); /* Incoming addr */
echoserver.sin_port = htons(SERVER_PORT); /* server port */
/* Bind the server socket */
if (bind(serversock, (struct sockaddr *) &echoserver,
sizeof(echoserver)) < 0) {
Die("Failed to bind the server socket");
}
/* Listen on the server socket */
if (listen(serversock, MAXPENDING) < 0) {
Die("Failed to listen on server socket");
}
/* Run until cancelled */
while (1) {
unsigned int clientlen = sizeof(echoclient);
/* Wait for client connection */
if ((clientsock = accept(serversock, (struct sockaddr *) &echoclient,
&clientlen)) < 0) {
Die("Failed to accept client connection");
}
fprintf(stdout, "Client connected: %s\n", inet_ntoa(echoclient.sin_addr));
HandleClient(clientsock);
}
}
client端
#include <netinet/in.h> // for sockaddr_in
#include <sys/types.h> // for socket
#include <sys/socket.h> // for socket
#include <stdio.h> // for printf
#include <stdlib.h> // for exit
#include <string.h> // for bzero
/*
* #include <sys/types.h>
* #include <sys/stat.h>
* #include <fcntl.h>
* #include <unistd.h>
*/
#define SERVER_PORT 6000
#define BUFFER_SIZE 1024
#define FILE_NAME_MAX_SIZE 512
#define SERVER_IP "192.168.3.219"
int client_socket = 0;
int main(int argc, char **argv)
{
//设置一个socket地址结构server_addr,代表服务器的internet地址, 端口
client_socket = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in server_addr;
bzero(&server_addr, sizeof(server_addr));
server_addr.sin_family = AF_INET;
if (inet_aton(SERVER_IP, &server_addr.sin_addr) == 0) //服务器的IP地址来自程序的参数
{
printf("Server IP Address Error! \n");
exit(1);
}
server_addr.sin_port = htons(SERVER_PORT);
socklen_t server_addr_length = sizeof(server_addr);
// 向服务器发起连接,连接成功后client_socket代表了客户机和服务器的一个socket连接
if (connect(client_socket, (struct sockaddr*) &server_addr,
server_addr_length) < 0)
{
printf("Can Not Connect To %s!\n", SERVER_IP);
exit(1);
}
char* hello = "hello i am seven !\n";
uint16_t data[3] = {0,65535,0};
size_t len = sizeof(data) / sizeof(uint16_t); //获取数组长度
printf("data size: %i\n", len);
printf("hello size: %i\n", strlen(hello));
send(client_socket, hello, strlen(hello)+1, 0);
//send(client_socket, data, len*2, 0);
close(client_socket);
return 0;
}