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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:+ X5 ?% q: [. B# ]
  1. #include2 H2 U! F7 O" N
  2. #include
    1 P+ T! [7 K  l6 ~+ t0 W( w; Y9 r% d
  3. #include, f4 o$ @% B9 s
  4. #include% w: h/ _6 t7 F- Y6 h& s' c! G
  5. #include$ v+ C$ W5 j: f2 i& b
  6. #include( `7 `- L$ m5 J( L$ m% L
  7. #include; C- a" U! F% U+ I  p# U
  8. #include
复制代码

6 E( g2 u0 R7 d' @! e! _6 M
7 M& b% n9 [+ R. n服务器代码如下:) b4 v. a4 Y7 t0 L7 ?# l2 |
  1. #include; d) G; \7 f8 ~: Z' A8 `! o
  2. #include4 A) x! w- o# B3 R8 q" {0 I
  3. #include
    ! y; ~+ p8 y! c) [. e+ e
  4. #include/ [$ @. r9 L- ?. _8 @: |
  5. #include
      x5 F4 n& n% U
  6. #include# ?5 A0 A/ I- e* Q1 U  I$ ~  c
  7. #include
    . E# n; I- P# K! U4 q/ A6 o
  8. #include
复制代码
9 L' g3 D- c- r

' F% l- o% x9 y& O" \* z$ \. u  j; _" }
7 C; n+ G8 i/ ?
' ]" o8 o! [2 v3 ~" q, N

* V1 n# e8 F6 U  l3 y" ~4 V0 f
+ k; b+ q  ]# R, C/ r5 Q- k

  ]$ B0 h. p3 {! g+ L2 j" Y# f' Q- X% Z  L. c1 r- w+ i

- S! ?8 y2 l, c0 l& B4 M' X, O2 [* O( i7 U/ ~% x6 X

/ {9 J" O$ R0 O* B  P& l, R
! `8 }: ?- O2 r' X: y8 ^2 s/ ^
# z, Y( t5 G, z0 X$ f
/ v4 w2 A0 D! v+ ^; P1 F0 x+ R

1 k, n7 q) G4 Y3 |, F: o- {( l2 b6 b/ v4 u

3 f7 K' M, e+ |' F, c/ H% C
3 f6 j/ n: E7 `) k/ i' O

0 d3 Z, w0 c& p# D% X5 n% {" v6 N% P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:: V" D7 Y) z  H
#include <sys/types.h> 6 m' o: O+ g2 p3 i
#include <sys/socket.h> 
8 M8 V, Y0 A9 h( U4 _5 {% `! z#include <unistd.h> , c% U" |9 c0 w
#include <netinet/in.h> 
$ R2 i, j7 J! d7 v3 N#include <arpa/inet.h> 9 t) N- M. M# p0 \5 x( _8 V
#include <string.h> / u/ q- }' j7 [1 d! }3 p
#include <stdio.h>  
5 D+ V5 H) [% Q$ m* O) bint main() {
* W' P4 A8 n* ~2 Y4 D        int sockClient;
* ~  c% P6 ?, C" y8 Z; V& ]. N0 \. }        struct sockaddr_in addrSrv;  W) u2 Z) Q9 v: V2 R9 M* J
        sockClient = socket(AF_INET,SOCK_DGRAM,0);# F/ n. n# E, m# V
        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");) |- t2 l( `3 `7 J
        addrSrv.sin_family=AF_INET;
8 ]  j+ ?, E/ m2 F        addrSrv.sin_port=htons(6000);' T" d9 ~' l* C8 d' \& }% P3 g! G' C
        while(1)
& Y" M$ e1 S3 g1 Q        {
8 A1 A. w3 _9 g                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));: ]1 e/ m7 N; Z2 S& [
                sleep(2);
8 E8 T* m9 C. M/ n# o) f9 G  C, p        }    
4 ~3 h* }- d: }! q        close(sockClient);  
7 W  i& R2 W& U6 ~' H1 d        return 0; 
' Y1 o; L9 H! @* s) F$ J2 }}$ k; D/ K' b; }& F$ d. ~, u3 m

3 t0 n; c- |0 ]
- U2 s2 i; M0 L客户端:
  1. #include <stdio.h> 5 f2 g  o2 C, X0 B' `
  2. #include <sys/types.h> 
    0 d# Q4 R, f& M, C' l. E
  3. #include <sys/socket.h> 
    1 `- j  X8 H9 D. U3 L
  4. #include <netinet/in.h> 
    * D( I1 B, F8 ~; `* n* G2 V
  5. #include <arpa/inet.h> 
    & u  f3 _$ k5 P; y8 x7 g/ I
  6. #include <string.h> # k4 ]9 g5 H- ?$ v0 N
  7. #include <unistd.h> 
    7 [1 y. D( Y$ o" _: z
  8. #include <fcntl.h> 
    + z( ^) R& j& ?& e( v2 Q" x: f
  9. #include <sys/time.h> 8 h* d  t4 k, Z; C
  10. #include <sys/select.h> - h% Z$ G# i5 Q$ c
  11. #include <sys/ioctl.h>  
    6 O6 P0 E2 B9 s* v+ S$ q; J
  12. int main() {
    9 P3 K1 r4 J' Q& L' Q
  13.         int sockSrv;4 ~6 g) B1 O' ?. c: r: D
  14.         struct sockaddr_in addrSrv;
      u6 g/ G; ]' l6 h- C0 h/ c
  15.         int len;; Y- ?: n- w; k3 t
  16.         char recvBuf[100];
    $ U2 M( `8 |) H
  17.         scanf("%s",recvBuf);
      V4 k! K" V- _/ k( z# V+ ?
  18.         struct sockaddr_in addrClient;
    6 L$ _. k% ^1 M2 S% U
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    $ G* e0 w/ H* S' x  f* `9 \
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    & X. }3 m& U! {3 k- \6 b6 Y" H
  21.         addrSrv.sin_family = AF_INET;
    , I. `; H' n6 x* v
  22.         addrSrv.sin_port = htons(6000);! `, {* _' Z4 \& c- a' \1 i
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));* n$ |% f0 K5 M$ A9 T5 C6 q) w
  24.         len = sizeof(struct sockaddr);
    % E5 L8 x( R4 |* Z% o* d5 b7 d5 `
  25.         memset(recvBuf, 0, 100);
    & G5 C9 d" U4 P
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    0 ]3 @" r# v: Q0 j; V5 I
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    " Y8 s  h& p; x2 L/ C3 s& V
  28.         printf("Client data is:%s\n",recvBuf);9 e5 p6 x# R/ U5 j8 F/ ~. V
  29.         close(sockSrv);
    # Y8 [% h8 V1 Z# c' b9 J: m" }
  30.         return 0;
    5 v- q5 N% s  X: s
  31. } 
复制代码
9 t* h2 y+ k$ }3 b  ^

, B% F, k' j# _. i+ h# K
: G* r) i0 t9 E8 z5 q9 n. S! y. n, ^
$ {) a) h( a; x" e* ~
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-17 18:32 , Processed in 0.103839 second(s), 18 queries .

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