话不多说,上代码。
client端代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define BUFSIZE 100
int main()
{
//create client socket
//int sock = socket(AF_INET, SOCK_STREAM, 0);
//bind ip and port
struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
serv_addr.sin_port = htons(6666);
//create BUF
char readbuf[BUFSIZE] = {0};
char writebuf[BUFSIZE] = {0};
//connect
int sock = socket(AF_INET, SOCK_STREAM, 0);
connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
read(sock, readbuf, BUFSIZE - 1);
printf("Message form server: %s\n", readbuf);
memset(&readbuf, 0, BUFSIZE);
close(sock);
while(1){
//create client socket
int sock = socket(AF_INET, SOCK_STREAM, 0);
//connect
connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
printf("input:\n");
gets(writebuf);
printf("%s\n", writebuf);
write(sock, writebuf, BUFSIZE );
read(sock, readbuf, BUFSIZE);
printf("Message form server: %s\n", readbuf);
memset(&writebuf, 0, BUFSIZE);
memset(&readbuf, 0, BUFSIZE);
close(sock);
}
return 0;
}
server端代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define BUF_SIZE 100
int main()
{
//create socket
int serv_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
//create server addr
struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
serv_addr.sin_port = htons(6666);
//bind server socket and server addr
bind(serv_socket, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
//listen server_socket
listen(serv_socket, 30);
//create client addr
struct sockaddr_in clnt_addr;
socklen_t clnt_addr_size = sizeof(clnt_addr);
//create buffer
char sendbuffer[BUF_SIZE] = {0};
char recvbuffer[BUF_SIZE] = {0};
//send data to client
int first_socket = accept(serv_socket, (struct sockaddr*)&clnt_addr,
(socklen_t *)&clnt_addr_size );
char str[] = "Happy New Year!";
write(first_socket, str, sizeof(str));
close(first_socket);
while(1){
int clnt_socket = accept(serv_socket, (struct sockaddr*)&clnt_addr,
(socklen_t *)&clnt_addr_size );
read(clnt_socket, recvbuffer, BUF_SIZE);
puts(recvbuffer);
//send back to client
write(clnt_socket, recvbuffer, sizeof(recvbuffer));
close(clnt_socket);
memset(&recvbuffer, 0, BUF_SIZE);
}
//close socket
close(serv_socket);
return 0;
}
做一个socket编程的笔记。