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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:9 {9 i7 E7 C' R
  1. #include5 L; d$ l/ h# u! r) H* h, K
  2. #include
    # k2 D% b" v# T/ U
  3. #include
    $ M/ W8 r- ?6 ]# ^7 @3 {' K# W
  4. #include
    2 Z3 h" R) w  U5 \
  5. #include, c: g' B& }8 O6 Y7 F/ q
  6. #include+ e2 g5 `- j7 V* F' D
  7. #include7 `3 I' `; ?! f
  8. #include
复制代码

1 H( q# q  G3 L# R9 T- y
; l! `; _# d4 h! ]  n服务器代码如下:
5 C) Y' \: Y! Y  x
  1. #include
    & I" v# s" _9 ]  s% h" r
  2. #include
    ( n; Y( j9 P& b5 r5 S. y
  3. #include
    9 ~3 ^/ Y7 l' [' l
  4. #include" h1 e* ^9 u5 ~; g  Q/ Q
  5. #include, d- T1 e2 Z6 U7 z( z' G; j6 G! B8 X
  6. #include
    # U' Q5 Y! b5 s+ r8 _( t
  7. #include
    ' x) r: _1 o% v0 z1 a& N/ [0 ?! I
  8. #include
复制代码
, y- Z8 k, `5 @; @

9 ~8 I* h2 A3 v+ j0 o& l
9 v- [& @+ `; G/ p8 L6 W4 \
# Q, }; E3 b5 L1 x4 m

' g5 ^- c5 D$ g' G5 g

5 ~! Z4 S' I5 f* ~8 v6 R) L) F  y  I, K# a. q0 N0 M
. r, L* E: z1 j7 Y
& Q& R8 j1 ~* Q6 [; z. G9 U* F) d
' i( ~6 w* a  d0 D( h
% _2 l' t$ @1 y- i* K

( z2 K( @7 Y8 e. j- X2 Q2 p* f' M& f0 W& K

+ n: |/ J& b& l. [- v" X5 ~. ?$ b: g, k' f. ^4 j

+ g3 T- m$ s3 U/ B: X/ O, G9 }% M7 b: F: n( Y! E' K4 E
! ^; O( y: V0 d5 W# O( i
2 r0 {' \. l, E  I& [

7 `; ]' ]1 O" T7 g6 X' A; D% E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:* |; h9 n; @- q6 i" J$ p7 T% a* ^
#include <sys/types.h> 
% p% E5 I1 w2 t, F5 B; y* r#include <sys/socket.h> 
+ W3 q4 M. Y' y5 X& k#include <unistd.h> 
. O4 l& d& M  ^' G4 ]/ L3 D#include <netinet/in.h> 
0 O: h4 e1 J! @  x+ ~- D) t#include <arpa/inet.h>   F3 K: o; {/ u0 P: i
#include <string.h> 
' B. [4 b7 m. H8 G#include <stdio.h>  
4 |+ V' t) a. D5 D  B! Q  [) rint main() {
% R" P$ _& z' r+ w# ^& r* x7 i        int sockClient;
9 H3 F6 n+ n0 }) b3 i) i# T        struct sockaddr_in addrSrv;4 K1 O7 D4 ^, S
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
4 o1 N" O# d% ^& Z5 D        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
0 Z$ Y' u2 Y! T) k) g' {) \/ }        addrSrv.sin_family=AF_INET;
8 c$ I! ^3 B5 }# `) `9 H; n        addrSrv.sin_port=htons(6000);/ Q$ _* W6 W" T, Q4 V1 D3 ]1 i3 N
        while(1)
. q$ h0 ?% K( P' }: B4 ]  E        {
3 f8 U$ k# }7 D+ c# m                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
( ~* K9 V7 f+ D0 V                sleep(2);7 w8 I9 e' k; \% c  C
        }    # @- M+ @7 E$ ]$ T) h8 a0 w+ c
        close(sockClient);  1 G" o8 T/ g3 C! w- n
        return 0; / ]7 w3 Q1 q4 C% ?. ^8 w
}9 e; Z! L" H$ T3 b

* K9 a, f) X9 J' J. T8 k
# z1 z8 h$ G. V+ q客户端:
  1. #include <stdio.h> 
    ' D, N2 e. t6 o7 L: e
  2. #include <sys/types.h> 3 T, E7 q# p; p2 z
  3. #include <sys/socket.h> 
    6 M9 V% g( K' B. k$ L) g
  4. #include <netinet/in.h> , g, k, E; T9 g( O5 I: j% o2 q5 v
  5. #include <arpa/inet.h> : X( g$ }; C/ v4 G
  6. #include <string.h> 
    # v  I5 g4 }/ [2 c7 B' Y
  7. #include <unistd.h> 
    2 G" i7 L' \- o. E* }, e# v8 O! F4 x. E
  8. #include <fcntl.h> 
    % Z* E/ v+ b  ?) z6 H! f
  9. #include <sys/time.h> 
    3 U- e; A2 ~" Z# Y  r/ k3 Y) q/ j
  10. #include <sys/select.h> 
    " R: v  ^- @. J' m& d3 z
  11. #include <sys/ioctl.h>  ) U& r1 [- H' K2 ]- `  j
  12. int main() {1 Q& ~3 V7 x  C" t' \
  13.         int sockSrv;
    , w) v& U7 L  `' ~. G- V
  14.         struct sockaddr_in addrSrv;
    # r  P, T. q( {
  15.         int len;
    & U5 @0 ~0 g( k& i
  16.         char recvBuf[100];
    ( P- G; M5 n; i6 A
  17.         scanf("%s",recvBuf);
    * b3 K, b8 ?3 {: K( K, s+ e% i
  18.         struct sockaddr_in addrClient;
      Q' A, q0 B+ |
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);; n; f3 V' B: |/ N
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);9 r! p  u4 \: \
  21.         addrSrv.sin_family = AF_INET;
    : {" l/ g! }8 t: |
  22.         addrSrv.sin_port = htons(6000);
    0 x( m8 o1 u6 Q! z; k
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));8 [+ c3 i  N1 C3 P8 `7 F, @& g
  24.         len = sizeof(struct sockaddr);: p, I) s$ L$ {( ]
  25.         memset(recvBuf, 0, 100);
    $ q. R+ d5 K# b; a! L
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);( a; V7 y2 }0 b$ e5 _3 t
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    + u& v1 n# K2 J9 b9 g, v7 Z% V
  28.         printf("Client data is:%s\n",recvBuf);
    ! \7 E6 q2 x  J+ l9 k* y3 N
  29.         close(sockSrv);0 o4 L6 r5 p# K
  30.         return 0;
    0 Z. s/ ~# G" h1 m: a2 u
  31. } 
复制代码

$ H8 B6 [0 M1 l- e
" `5 m+ l9 j+ L  h
# r% p7 Q3 L5 J% l
2 w5 p5 H' e! u" w: _
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2026-1-30 13:03 , Processed in 0.056357 second(s), 18 queries .

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