/*
* The Socket Client
* example: client 192.168.0.2 6777
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
//#include <sys/types.h>
#include <sys/socket.h>
//#include <netinet/in.h>
#include <netdb.h>
void error(const char * msg) {
perror(msg);
exit(0);
}
// gets safe edition
void gets_s(char *s,int n)
{
register int c;
register char *cs;
cs=s;
while(--n>0 && (c=getc(stdin))!=EOF && c!='\n')
*cs++=c;
*cs='\0';
if((c==EOF && cs==s) ||(c=='\n' && cs==s))
s = NULL;
}
int main(int argc, char *argv[]) {
int sockfd, portno, n;
char buf[64];
struct sockaddr_in serv_addr;
struct hostent *host;
if (argc < 3) {
fprintf(stderr, "usage %s hostname port\n", argv[0]);
exit(0);
}
// Get server entry
host = gethostbyname(argv[1]);
if (host == NULL) {
fprintf(stderr, "ERROR, no such host\n");
}
// Get the socket
portno = atoi(argv[2]);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
error("ERROR opening socket");
}
printf("Created socket successfully! No: %d\n", sockfd);
// Initialize socketaddr_in
bzero((struct sockaddr_in *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *) host->h_addr, (char *) &serv_addr.sin_addr.s_addr,
host->h_length);
//inet_aton(host->h_addr_list[0], &serv_addr.sin_addr.s_addr);
//serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(portno);
// connect
printf("Connecting...\n");
if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr))) {
error("ERROR on connecting");
}
printf("Connected successfully.\n");
// input
printf("Please enter the message:");
bzero(buf, 64);
gets_s(buf, 64);
printf("Writing...\n");
n = write(sockfd, buf, 64);
if (n < 0)
error("ERROR on reading");
printf("Your text is here:\n%s\n", buf);
close(sockfd);
printf("\nClosed!\n");
return 0;
}
Linux下的简单socket编程示例
3星 · 超过75%的资源 需积分: 35 163 浏览量
2011-05-04
12:55:03
上传
评论
收藏 2KB ZIP 举报
安安爸Chris
- 粉丝: 8817
- 资源: 17
最新资源
- J185-VB一款SOT23封装P-Channel场效应MOS管
- 计算整数各位数字之和,利用java代码实现
- J185-T2B-VB一款SOT23封装P-Channel场效应MOS管
- map20231226Kalmanfilter.ipynb
- J185-T1B-VB一款SOT23封装P-Channel场效应MOS管
- ASME Y14.5-2018 尺寸与公差标注 中文版
- J185-T1B-A-VB一款SOT23封装P-Channel场效应MOS管
- J168-VB一款SOT23封装P-Channel场效应MOS管
- J166-VB一款SOT23封装P-Channel场效应MOS管
- i2c测试程序-linux-如何调试i2c.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈