关于LINUX下 socket的 TCPClient调试问题!

来源:百度知道 编辑:UC知道 时间:2024/06/24 07:06:14
/******* 客户端程序 TCPClient.c ************/

#include <stdlib.h>

#include <stdio.h>

#include <errno.h>

#include <string.h>

#include <netdb.h>

#include <sys/types.h>

#include <netinet/in.h>

#include <sys/socket.h>

#define RECVBUFSIZE 1024

int main(int argc, char *argv[])

{

int sockfd;

char buffer[RECVBUFSIZE];

struct sockaddr_in server_addr;

struct hostent *host;

int portnumber,nbytes;

if(argc!=3)

{

fprintf(stderr,"Usage:%s hostname portnumber\a\n",argv[0]);

exit(1);

}

if((portnumber=atoi(argv[2]))<0)

{

fprintf(st%sderr,"Usage:%s hostname portnumber\a\n",argv[0]);

exit(1);

}

/*客户程序开始建

1. 代码中有提示啊,是两个参数,argc是包括执行程序名称的
./TCPClient <ServerIP> <ServerPort>
第一个参数是服务器的IP地址,第二个参数是服务器开放的端口号
2. 是的,对于TCP Socket来说,必须先connect,成功后即可发送/接收。
需要注意的是,TCP是全双工的,可以同时发送/接收,而不是lz说的先send再recv。

具体如何,取决于实际的应用,如果你的应用中服务器必须先等待客户端发送数据,然后服务器作出回应,那就是先send再recv
但TCP协议是没有这样的约束的。

分类应该选“编程”吧

分类应该选“编程”吧

分类应该选“编程”吧

1:./tcpclient 3 218.194.47.*
2:connect成功之后,可以send也可以recv,可以服务端先发数据也可以客户端先发,但是connect只能是服务端先打开监听端口,客户端再连接.