linux编程socket程序的编译语句
发布网友
发布时间:2022-04-30 20:33
我来回答
共1个回答
热心网友
时间:2023-11-02 00:28
server端:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include<string.h>
#include <ctype.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define MAX_LINE 100
int main()
{
struct sockaddr_in server;
struct sockaddr_in client;
int server_fd;
int client_fd;
socklen_t len;
char buf[MAX_LINE]; //用于存储传送内容到缓冲区
char addr_ip[INET_ADDRSTRLEN];//存储客户端地址缓冲区
int port = 8000;//端口号8000
int n; //读写字节数
bzero(&server,sizeof(server));//清空地址结构
server.sin_family = AF_INET;//使用ipv4
server.sin_addr.s_addr = INADDR_ANY;//服务器可以接受任意地址
server.sin_port = htons(port);//把端口号转成网络字节序
server_fd = socket(AF_INET,SOCK_STREAM,0);//创立套接字,使用tcp协议
bind(server_fd,(struct sockaddr *)&server,sizeof(server));//将地址和套接字绑定
listen(server_fd,10);//开始监听
printf("waiting```\n");
while(1)
{
client_fd = accept(server_fd,(struct sockaddr *)&client,&len);
n = read(client_fd,buf,MAX_LINE);//读取客户端来的消息
inet_ntop(AF_INET,&client.sin_addr,addr_ip,sizeof(addr_ip));
printf("client ip is : %s , port is : %d\n",addr_ip,ntohs(client.sin_port));
printf("content is : %s\n",buf);//打印客户端信息
write(client_fd,buf,n);//转发回去给客户端
close(client_fd);
}
if(close(client_fd) == -1)
{
perror("fail to close");
exit(1);
}
return 0;
}
client端:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define MAX_LINE 100
int main(int argc,char * argv[])
{
struct sockaddr_in server;//服务器地址
char buf[MAX_LINE];
int server_fd;
int port = 8000;
char *str = "test string";//默认字符串
if(argc > 1)
{
str = argv[1];//从命令参数中取得用户输入的串
}
bzero(&server,sizeof(server));//清空地址结构
server.sin_family = AF_INET;//使用ipv4
inet_pton(AF_INET,"192.168.228.129",&server.sin_addr);
server.sin_port = htons(port);
server_fd = socket(AF_INET,SOCK_STREAM,0);//创建套接字
connect(server_fd,(struct sockaddr *)&server,sizeof(server));
write(server_fd,str,strlen(str) + 1);
//因为是本机测试,所以不用考虑延时
read(server_fd,buf,MAX_LINE);
printf("recieve from server :%s\n",buf);
close(server_fd);
return 0;
}
//源码来自于网络,谁写也都类似,都是基于tcp的三次握手协议来写的
linux下socket 网络编程(客户端向服务器端发送文件) 求源代码 大哥大姐...
//TCP //服务器端程序 include< stdio.h > include< stdlib.h > include< windows.h > include< winsock.h > include< string.h > pragma comment( lib, "ws2_32.lib" )define PORT 2046 define BACKLOG 10 define TRUE 1 void main( void ){ int iServerSock;int iClientSock;char *b...
linux下的 socket编程问题!
对,是那样的,用open打开文件,用read读取文件,在发送给对方,接收方接收到后,写入文件就可以了。不过在这个过程中最好别用字符串函数,除非你很熟悉。第二个问题 首先你得去搞清楚什么是线程,什么是进程,fork出来的叫进程,pthread_create出来的才叫线程。服务器有很多种模型(多进程,多线程,selec...
linux下socket 网络编程(客户端向服务器端发送文件) 求源代码 大哥大姐...
server:include <stdio.h> include <errno.h> include <unistd.h> include <signal.h> include <stdlib.h> include <sys/types.h> include <sys/socket.h> include <arpa/inet.h> include <netinet/in.h> include <syslog.h> include <sys/time.h> include <string.h> include <fcntl.h...
计算机网络socket linux下用c或c++写
h.sin_addr.s_addr = INADDR_ANY;s = socket(AF_INET, bTcp?SOCK_STREAM:SOCK_DGRAM, 0);if (s < 1) { perror("socket(listen)"); return 0;} r = setsockopt(s, SOL_SOCKET,SO_REUSEADDR, (char *)&o, sizeof(int));if (r == -1) { perror("setsockopt(listen)"); re...
linux C语言编程,socket实现的即使通讯系统
(1)通过socket()函数创建socket(2)通过bind函数绑定socket于设备地址(3)进行读写操作read/recv/recvfrom write/send/sendto(4)close方法关闭套接字 例子如下:test1.c include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <netinet/in.h> #include <arpa/inet.h...
linux 下套接字socket编程,求代码,实在写不出来。总出现各种各样的错误...
linux 编程一般都不会直接空敲代码的,比较熟练的程序员也要经常查man page的。所以,要有信心,有恒心。从基础做起,多看书,多练习。你说的程序其实挺简单的,写一个,比较ugly,仅给楼主练习作参考。tcpclient.c include "debug.h"int main (int argc, char *argv[]){ int cfd;char buf[...
刚介入linux c的socket编程没多久,想要写一个socket客户端,实现多线程...
include <sys/socket.h> include <netinet/in.h> define PORT 8888 void *yourfunction(void *connect_fd){ int connfd = *((int *)connect_fd);。。。} //你没说具体的应用,所以只能写这么多了。在这里面直接对connfd调用read和write函数就可以和客户端收发数据了。//补充:是啊 返回给...
Linux下C语言Socket编程问题?(高手进)
网络断开如拔掉网线时,系统程序一般是检测不出来的,尤其是广域网上。建议连接时设置linger属性,如果网络不通,能迅速决断立即返回失败错误。LINGER oLinger;oLinger.l_onoff = 1;oLinger.l_linger = 0;setsockopt(m_Socket,SOL_SOCKET,SO_LINGER,(char *)&oLinger,sizeof(oLinger));...
关于socket编程问题,100分急求
假设是linux环境:1. 你只要不断地调用read(socket, rev_buf, MAX_REV_BUF_SIZE-1), 并在while循环里检查read的返回值是不是为0,只要不是0,就把它rev_buf加到一个string中。所以不需要用EOF flag,只要client端不发送了,服务器端read的时候就会返回0.2. 缓冲区只会对TCP/IP的协议栈的...
如何在linux/ubuntu下编写c++网络通信代码
方法/步骤 1 1.服务器端的代码:void SocketServer::CreateConnect(){ std::cout<<"start Create Socket!"<<std::endl; m_nSocket = -1; struct sockaddr_in server_addr; struct sockaddr_in client_addr; int portnumber=4321; if((m_nSocket=socket(AF_INET,SOCK_STRE...