您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14013|回复: 1
打印 上一主题 下一主题

[C] C语言学习之Linux下TCP服务器与客户端的实现

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:
9 n$ k4 k" ^7 H. u9 t4 i7 u  h
  1. #include
    ! \5 ]6 U( }& Q
  2. #include, h- g7 \* M7 I, G+ [
  3. #include
    ' s! f( v2 R7 X
  4. #include( O0 i# f7 z) d# l5 b8 {! z; W
  5. #include
    & r, G; [* [& Z# A* s: z. S) a0 e
  6. #include! I. Q/ g! ^7 e4 ^" Q. S$ ~
  7. #include
    + ^8 [" l: U% ^5 _+ u
  8. #include
复制代码
6 l0 B2 D; Y0 E3 o5 v! U

  g$ f0 l4 c5 g7 o; u服务器代码如下:  M4 u& B' H! A8 u( z8 E# m
  1. #include7 i) t0 `/ ]$ d7 i. I
  2. #include0 k4 ~1 {# d) `+ a) N' X* g5 e8 F
  3. #include
    ) q+ }* ^5 y5 k
  4. #include  r4 ^# w3 v/ s* ^3 `% E- i0 b/ i
  5. #include) Q; \/ n& Q/ m  B+ X6 s! r6 |+ f
  6. #include
    + H! [. n' k, O! q! N
  7. #include6 }+ D& `  r! |
  8. #include
复制代码
) l% b3 O/ {# L! ~

: \8 }5 D! a" K) |8 G1 D2 Q% [
! }7 G: ?  h2 \. z+ ?. @

* R7 x9 Q' e3 S7 }8 U5 ]
+ L$ s4 }& {8 p7 z1 c; ~

4 O* ?% a  W6 r( w4 H
; J& ?! y3 y  I! a) l  J$ N9 h" G

7 E& }2 h7 b9 k+ W3 _& M# t
) o, _) g5 x2 m1 M+ G6 S

# Q& Q1 V9 y  E) c+ k/ U: t  t( b: u3 ?  F; S
. G- F( m; W. {, C0 A# X
0 F$ H5 b8 E2 s0 t8 u  r5 S$ v! W

  [0 f2 o7 o( l! e& A# C2 H
' q9 e) X, l2 j, U6 P# J8 w' F

: h2 R9 f% B/ ]! ^4 z, I+ ~1 b, a2 Q( `$ B7 p

0 a8 @) P4 N+ g0 @: N
" q" F8 v# {0 N& }

( j, y" H$ N, r; t8 X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:+ X9 R9 U6 z: I0 o
#include <sys/types.h> 
# B  n+ o9 N: {- O#include <sys/socket.h>   Q0 j1 _) S- [/ _# Q
#include <unistd.h> 
7 h3 i" T6 i  b8 Y#include <netinet/in.h> 6 S, c- _$ j" @6 X+ Y+ P
#include <arpa/inet.h> " ^0 t/ b4 e' S. r& M
#include <string.h> 3 O" N8 v( n* @
#include <stdio.h>  8 `0 ^- g! U7 D4 {+ |
int main() {
" {2 Q" _5 R9 }  j& F        int sockClient;
% ~6 A4 n5 y4 G; N3 b! X8 }        struct sockaddr_in addrSrv;
" ^6 x+ f* e/ H$ {. H# }0 s        sockClient = socket(AF_INET,SOCK_DGRAM,0);/ f5 X' w( i* a2 Q: {& D  B
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
  W* u) d9 V8 s5 o2 F        addrSrv.sin_family=AF_INET;5 T& m. L, v7 ?" }: n
        addrSrv.sin_port=htons(6000);
4 o; g2 u9 S& ?0 V- P        while(1)
4 T/ z, k* _9 J2 A, ^: l# \        {
9 t: S" ?+ l2 ]9 K* d, t! l- K                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));9 ]2 O# L- l, G8 |2 Y- ^
                sleep(2);
( }5 G: l# e  Z1 D        }    
! P/ u  Y; |# H1 Z3 v* `  d        close(sockClient);  $ L; _7 X5 r- c: u: y5 X; T- S
        return 0; 7 }9 `. X/ _, ~
}7 a% U8 M, `2 y# H+ O/ Y
$ P0 B5 F& n# ]- K9 a" j) O% L
1 C3 A4 e4 P9 I) ^- A, D) x
客户端:
  1. #include <stdio.h> / H5 ^2 ^$ V* A. f
  2. #include <sys/types.h> , h$ Q* n$ ?. ~0 I; {7 _
  3. #include <sys/socket.h> " h0 |7 O/ v) G7 z- t
  4. #include <netinet/in.h> ( o& n4 v2 b( J5 P9 O  p- F7 g
  5. #include <arpa/inet.h> ; \2 y7 X% F3 Q: i% X2 \) L
  6. #include <string.h> 7 k0 R3 n8 G/ M
  7. #include <unistd.h> 6 y; ^# O' k! \: w' l9 L# B, Y
  8. #include <fcntl.h> 
    + M0 \) D9 u" ?' h/ Q* O
  9. #include <sys/time.h> . p* n) \. V0 c5 e- a% \: a& B
  10. #include <sys/select.h> 
    & R" d$ j& b# B' d4 F4 @
  11. #include <sys/ioctl.h>  . ~; N8 u  Y9 T  v( H/ O) u
  12. int main() {
    6 I/ k7 {7 A# W: g- c
  13.         int sockSrv;
    + M0 K. y* x- r3 W* q2 s
  14.         struct sockaddr_in addrSrv;
    % W  T4 t  a9 u' l% m; Q
  15.         int len;7 d. G1 B# Q+ b0 |: m; f
  16.         char recvBuf[100];& }0 }" _1 A( O1 `( U. o: Z1 b
  17.         scanf("%s",recvBuf);  ]7 O( j$ H) _2 {: g# p  B8 A
  18.         struct sockaddr_in addrClient;
    4 g8 {6 X2 _# N2 q3 p2 l# c/ J
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    2 g1 a& p9 b  ]- ?! F2 L
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
      z2 L: e7 C$ B1 Q& }
  21.         addrSrv.sin_family = AF_INET;; f0 m) E* M1 o, ^
  22.         addrSrv.sin_port = htons(6000);" N' H8 X- k4 O! F' I: z  O
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    $ S: w7 Q3 I3 m3 z/ G# z2 P3 F
  24.         len = sizeof(struct sockaddr);2 O) \* j+ }' v
  25.         memset(recvBuf, 0, 100);
    $ a! V1 [8 {2 B- X" B
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    - {6 I6 [" s) Z: L8 O. T- v
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));* \5 u. ~4 v* @% e1 O# \9 C$ s9 \
  28.         printf("Client data is:%s\n",recvBuf);
    8 K- F7 g2 u0 ~8 u
  29.         close(sockSrv);
    5 t; s8 j1 V0 q$ ?( V* W
  30.         return 0;
    , v% H: g7 s* X6 X1 L& d+ h
  31. } 
复制代码

1 Q% x( ]  _  i; U0 l) |; d5 [  r. |! V( j1 ?: Y% m7 v
+ r: d+ U+ b0 w0 ?$ j. i' R
: H$ O" `' r! k& V8 f6 |/ n! K. Q
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-27 04:08 , Processed in 0.062203 second(s), 20 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!