https://www.cnblogs.com/ashen/p/4474360.html
#include <sys/socket.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <stdio.h>
5 #include <linux/in.h>
6 #include <sys/types.h>
7
8 #define PORT 7891
9
10 int main()
11 {
12 int socketfd,accsocfd;
13 struct sockaddr_in s_addr,r_addr;
14 socklen_t len;
15 int recdata;
16 char buf[1024];
17 memset(buf,0x00,sizeof(buf));
18 //创建套接字
19 if(-1 == (socketfd = socket(AF_INET,SOCK_STREAM,0))){
20 printf("socketfd is created failed!\n");
21 return -1;
22 } ;
23 printf("socket create success!\n");
24
25 //将本地协议地址与sockfd绑定
26 memset(&s_addr,0x00,sizeof(s_addr));
27 s_addr.sin_family = PF_INET;
28 s_addr.sin_port = htons(PORT);
29 s_addr.sin_addr.s_addr = htons(INADDR_ANY);//inet_addr_any 一个服务器可能有多个网卡,随便从中选1个
30 if(-1 == bind(socketfd,(struct sockaddr*)&s_addr,sizeof(s_addr))){
31 printf("bind failed!\n");
32 return -1;
33 }
34 printf("bind suc!\n");
35
36 //监听本地端口
37 if(-1 == listen(socketfd,10)){
38 printf("listen failed!\n");
39 return -1;
40 }
41 printf("listen suc!\n");
42
43 while(1){
44 len = sizeof(struct sockaddr);
45 accsocfd = accept(socketfd,(struct sockaddr *)&r_addr,&len);
46 if(-1 == accsocfd){
47 printf("accept failed!\n");
48 return -1;
49 }
50 printf("accept suc !\nServer get connect from %x port is %x",ntohl(r_addr.sin_addr.s_addr),ntohl(r_addr.sin_port));
51
52
53 //向客服端发送数据
54 if(-1 == write(accsocfd,"this is first data from sr!\n",50)){
55 printf("write failed!\n");
56 return -1;
57 }
58 printf("write suc!\n");
59
60
61 printf("*********************\n");
62
63 char recvBuf[100];
64
65 if(-1 ==recv(accsocfd, recvBuf, 100, 0)){
66 printf("recv failed!\n");
67 return -1;
68 }
69 printf("recv suc!\n");
70 printf("recvBuf = [%s]\n",recvBuf);
71 printf("recvBuf len is = [%d]\n",strlen(recvBuf));
72
73 close(accsocfd);
74
75 }
76 close(socketfd);
77 return 0;
78 }
//c.c
#include<sys/socket.h>
#include<string.h>
#include<linux/in.h>
#include<sys/types.h>
#include<stdio.h>
#include<stdlib.h>
/*流程:
TCP:(面向连接、可靠)
服务器端 WSAStartup->socket->bind->listen->accept->recv/send->closesocket->WSACleanup
客户端:WSAStartup->socket->connect->recv/send->closesocket->WSACleanup
*/
#define PORT 7891
int main()
{
int csocfd;
int recdata;
char buf[1024];
memset(buf,0x00,sizeof(buf));
struct sockaddr_in mysockaddr;
//创建套接字
if(-1 == (csocfd = socket(PF_INET,SOCK_STREAM,0))){
printf("csocfd failed!\n");
return -1;
}
printf("csocfd suc!\n");
//设置服务器的地址
memset(&mysockaddr,0x00,sizeof(mysockaddr));
mysockaddr.sin_family = PF_INET;
mysockaddr.sin_port = htons(PORT);
inet_pton(AF_INET,"172.19.230.113",&mysockaddr.sin_addr.s_addr);
//s_add.sin_addr.s_addr= inet_addr("172.19.230.113"); /* ip转换为4字节整形,使用时需要根据服务端ip进行更改 */
//connect to the sr
if(-1 == connect(csocfd,(struct sockaddr*)&mysockaddr,sizeof(mysockaddr))){
printf("connect failed!\n");
return -1;
}
printf("connect suc!\n");
if(-1 == (recdata = read(csocfd,buf,sizeof(buf)))){
printf("read failed!\n");
return -1;
}
printf("read suc!\n");
buf[recdata ] = ‘\0‘;
printf("recdata = [%s]\n",buf);
printf("recdata len is = [%d]\n",recdata);
//memcpy(sendbuf,"this is data from cl!\n",);
if(-1 == send(csocfd, "this is data from cl!", 100, 0)){
printf("send faile\n");
return -1;
}
printf("send suc!\n");
close(csocfd);
}
原文:https://www.cnblogs.com/jukan/p/9600242.html