검색결과 리스트
분류 전체보기에 해당되는 글 54건
- 2013.10.04 tcp_server/client
- 2013.09.29 64비트 환경 python에서 단독 실행파일 만들기, 이제 py2exe 말고 cx_freeze합시다
- 2013.09.27 학교 과제
- 2013.09.15 윈도우8,7 64비트에서 파이썬 설치 제대로 하기
- 2013.06.04 20130604
- 2013.05.27 20130527
- 2013.05.26 손쉽게 저지를수 있는 MFC 실수중 하나
- 2013.05.22 20130522 HCI 과제 완료
- 2013.05.22 20130522 HCI
- 2013.05.19 WINAPI 프로그래밍시 초기화가 'case' 레이블에 의해 생략되었습니다 오류 관련
글
tcp_server/client
tcp_server.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
void error_handling(char *message);
int main(int argc, char *argv[])
{
int serv_sock;
int clnt_sock;
struct sockaddr_in serv_addr;
struct sockaddr_in clnt_addr;
socklen_t clnt_addr_size;
char message[]="Hello World!";
if(argc!=2){
printf("Usage : %s <port>\n", argv[0]);
exit(1);
}
serv_sock=socket(PF_INET, SOCK_STREAM, 0);
if(serv_sock == -1)
error_handling("socket() error");
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
serv_addr.sin_port=htons(atoi(argv[1]));
if(bind(serv_sock, (struct sockaddr*) &serv_addr, sizeof(serv_addr))==-1)
error_handling("bind() error");
if(listen(serv_sock, 5)==-1)
error_handling("listen() error");
clnt_addr_size=sizeof(clnt_addr);
clnt_sock=accept(serv_sock, (struct sockaddr*)&clnt_addr,&clnt_addr_size);
if(clnt_sock==-1)
error_handling("accept() error");
write(clnt_sock, message, sizeof(message));
close(clnt_sock);
close(serv_sock);
return 0;
}
void error_handling(char *message)
{
fputs(message, stderr);
fputc('\n', stderr);
exit(1);
}
/////////////////////////////////////
tcp_client.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
void error_handling(char *message);
int main(int argc, char* argv[])
{
int sock;
struct sockaddr_in serv_addr;
char message[30];
int str_len=0;
int idx=0, read_len=0;
if(argc!=3){
printf("Usage : %s <IP> <port>\n", argv[0]);
exit(1);
}
sock=socket(PF_INET, SOCK_STREAM, 0);
if(sock == -1)
error_handling("socket() error");
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=inet_addr(argv[1]);
serv_addr.sin_port=htons(atoi(argv[2]));
if(connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr))==-1)
error_handling("connect() error!");
while(read_len=read(sock, &message[idx++], 1))
{
if(read_len==-1)
{
error_handling("read() error!");
break;
}
str_len+=read_len;
}
printf("Message from server: %s \n", message);
printf("Function read call count: %d \n", str_len);
close(sock);
return 0;
}
void error_handling(char *message)
{
fputs(message, stderr);
fputc('\n', stderr);
exit(1);
}
'학교 실습 > 네트워크' 카테고리의 다른 글
chap6 code (0) | 2013.10.25 |
---|---|
chap5 echo_client2.c (0) | 2013.10.18 |
학교 과제 (0) | 2013.09.27 |
설정
트랙백
댓글
글
64비트 환경 python에서 단독 실행파일 만들기, 이제 py2exe 말고 cx_freeze합시다
http://cx-freeze.sourceforge.net/
python 쓰시는 분들은 단독 실행파일 만들때 이제 py2exe 말고 cx_freeze 쓰세요
py2exe에선 번들 1이 아니라 3으로 들어가서 파일이 우르르 생성되는데...
요놈은 그렇지 않답니다 >_<
'알아두자 > python' 카테고리의 다른 글
파일을 읽어와 HEX로 출력하되 16단위로 자르기 (0) | 2014.09.13 |
---|---|
vs2010 express (visual studio 2010 express) 다운로드 링크 (0) | 2014.05.16 |
모듈 불러올 시 차이점 (0) | 2013.11.21 |
프로그램 실행시간 측정 (second 단위) (0) | 2013.11.03 |
간단한 ppserver.py 배치파일 소스 (0) | 2013.10.08 |
설정
트랙백
댓글
글
윈도우8,7 64비트에서 파이썬 설치 제대로 하기
1. http://www.lfd.uci.edu/~gohlke/pythonlibs/
64비트용 패키지 파일을 받을 수 있는 페이지, 적극 활용
2. pycharm의 패키지 관리자 사용
파이참 인터프리터 설정으로 가면 패키지 관리자가 있는데, 여기서 pip랑 setuptools을 업그레이드 한 뒤에,
pycharm에서 패키지 검색하고 설치하면 제대로 깔린다.
내가 왜 이걸 몰라서 가상화 하고 별짓을 다 했을까........
'알아두자 > Windows' 카테고리의 다른 글
USB 메모리 인식 불량시 시도해볼수 있는 방법 (0) | 2014.03.16 |
---|---|
자동 백업은 코비안 (0) | 2013.10.09 |
WINAPI 프로그래밍시 초기화가 'case' 레이블에 의해 생략되었습니다 오류 관련 (0) | 2013.05.19 |
윈도우8 넷북 메트로 사용법 (Intel 계열...) (0) | 2013.03.29 |
Ultraiso로 Windows ISO USB로 만든 뒤 install.wim 오류시 (0) | 2013.03.29 |
설정
트랙백
댓글
글
20130604
전체 백업
리더랑 라이터
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#define MAXLINE 100
// reader부터 실행하쇼
// 이름있는 파이프를 통해 메시지 출력
int main()
{
printf("RUN FIRST NPREAD!!\nMessage : ");
int fd,length,count,i;
char message[MAXLINE];
fgets(message,sizeof(message),stdin);
length=strlen(message)+1;//null 문자 때문에
printf("Set Message Sending count : ");
scanf("%d",&count);
// 음수를 입력받으면 기본 카운터 5회로 전송하도록 예외처리
if(count<0){
printf("Error, Set Default Sending Count to 5");
count=4;
}
// 그 외에는 걍 보내셈 ㅇㅋ
else{
printf("\nOkay, Sending Count : %d",count);
count-=1;
}
printf("\nSending Message : %s",message);
do{
fd=open("myPipe",O_WRONLY);
if(fd==-1)
{
sleep(1);
}
}
while(fd==-1);
for(i=0;i<=count;i++){
write(fd,message,length);
sleep(1);
}
printf("\nSending Finish!\n");
//fclose(fd);
return 0;
}
*******************************************************************************
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#define MAXLINE 100
/* 이름 있는 파이프를 통해 읽은 내용을 프린트한다. */
int main( )
{
int fd;
char str[MAXLINE];
unlink("myPipe");
mkfifo("myPipe", 0660);
fd = open("myPipe",O_RDONLY);
while (readLine(fd, str))
printf("%s \n", str);
close(fd);
return 0;
}
int readLine(int fd, char *str)
{
int n;
do {
n = read(fd, str, 1);
} while (n > 0 && *str++ != NULL);
return (n > 0);
}
설정
트랙백
댓글
글
20130527
/*
interface i에 stop()을 추가
class a,b,c에서 이를 구현하고 사용하도록 수정
* 새로운 interface I2에 추상메서드 turn_on(),turn_off를 정의
* class B,C가 interface I2도 상속받도록
* class A에서 interface I2 를 사용하도록 수정
*/
package interfacetest2;
class A {
void autoPlay(I i) {
i.play();
}
void autoStop(I i) {
i.stop();
}
void turn_on(I2 i) {
i.turn_on();
}
void turn_off(I2 i) {
i.turn_off();
}
}
interface I {
public abstract void play();
public abstract void stop();
}
interface I2 {
public abstract void turn_on();
public abstract void turn_off();
}
class B implements I, I2 {
public void play() {
System.out.println("play in B class");
}
public void stop() {
System.out.println("play in B stop");
}
public void turn_on() {
System.out.println("play in B turn on");
}
public void turn_off() {
System.out.println("play in B turn off");
}
}
class C implements I,I2 {
public void play() {
System.out.println("play in C class");
}
public void stop() {
System.out.println("play in C stop");
}
public void turn_on() {
System.out.println("play in C turn on");
}
public void turn_off() {
System.out.println("play in C turn off");
}
}
class InterfaceTest2 {
public static void main(String[] args) {
A a = new A();
a.autoPlay(new B());// 비를 인터페이스로 넘김
a.autoPlay(new C());// 씨를 인터페이스로 넘김
a.autoStop(new B());
a.autoStop(new C());
a.turn_on(new B());
a.turn_on(new C());
a.turn_off(new B());
a.turn_off(new C());
}
}
'학교 실습 > HCI' 카테고리의 다른 글
20130522 HCI 과제 완료 (0) | 2013.05.22 |
---|---|
20130522 HCI (0) | 2013.05.22 |
130513 (0) | 2013.05.13 |
20130508 (0) | 2013.05.08 |
20130507 (0) | 2013.05.07 |
설정
트랙백
댓글
글
손쉽게 저지를수 있는 MFC 실수중 하나
// CPoint에서 pt라고 줬으니 당근 pt.x, pt.y로 해야 됨
void CMyView::OnLButtonDown(UINT id, CPoint pt)
{
CString strPos;
strPos.Format("%03d %03d",pt.x,pt.y);
HDC hdc;
hdc=::GetDC(m_hWnd);
::TextOut(hdc,0,0,strPos,strPos.GetLength());
::ReleaseDC(m_hWnd,hdc);
CView::OnLButtonDown(id,pt);
}
// CPoint 전역함수 아니고 지역함수잖아, 여기서 point라고 줬으니 아래도 point.x, point.y이런식으로
void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
CString strPos2;
strPos2.Format("%03d %03d",point.x,point.y);
CDC*pDC;
pDC=this->GetDC();
pDC->TextOutA(0,0,strPos2);
this->ReleaseDC(pDC);
CView::OnMouseMove(nFlags, point);
}
설정
트랙백
댓글
글
20130522 HCI 과제 완료
/*
sell 추가
Buyer 클래스에 sell(Product p) 메서드를 추가하라
*/
package polyargumenttest2;
class Product {
int price; // 제품의 가격
int bonusPoint; // 제품구매 시 제공하는 보너스점수
Product(int price) {
this.price = price;
bonusPoint = (int) (price / 10.0);
}
Product() {
price = 0;
bonusPoint = 0;
}
}
////////////////////////////////////////////////////////상품 추가 부분/////////////////////////////////////////////////////////////////////
// iPad 추가
class iPad extends Product {
iPad() {
super(90);
}
public String toString() {
return "iPad";
}
}
// Tv 추가
class Tv extends Product {
Tv() {
super(100);
}
public String toString() {
return "Tv";
}
}
// Computer 추가
class Computer extends Product {
Computer() {
super(200);
}
public String toString() {
return "Computer";
}
}
// Audio 추가
class Audio extends Product {
Audio() {
super(50);
}
public String toString() {
return "Audio";
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
class Buyer { // 고객, 물건을 사는 사람
int money = 1000; // 소유금액
int bonusPoint = 0; // 보너스점수
//ArrayList al = new ArrayList();
Product[] item = new Product[10]; // 구입한 제품을 저장하기 위한 배열
int i = 0; // Product배열에 사용될 카운터
void buy(Product p) {
if (money < p.price) {
System.out.println("잔액이 부족하여 물건을 살수 없습니다.");
return;
}
money -= p.price; // 가진 돈에서 구입한 제품의 가격을 뺀다.
bonusPoint += p.bonusPoint; // 제품의 보너스 점수를 추가한다.
item[i++] = p; // 제품을 Product[] item에 저장한다.
System.out.println(p + "을/를 구입하셨습니다.");
}
// 판매를 진행하되, 물건을 구입한 적이 없으면 판매를 할 수 없음, 그 조건을 반드시 사용하도록 해야됨
void sell(Product p) {
int sellcount = 0;
// 배열 안에서 검색
System.out.println("[판매] : "+p+" 를 판매합니다. 실제 물품을 가지고 있는지 확인합니다");
// 배열에서 검색 진행
for (int i = 0; i < item.length; i++) {
// 배열에 해당 상품명이 있을 경우
if (item[i] == p) {
money += p.price; // 가진 돈에서 구입한 제품의 가격을 더함
bonusPoint -= p.bonusPoint; // 제품의 보너스 점수를 뺌
//System.out.println("해당 상품이 발견된 배열의 위치 : " + i);
System.out.println("[승인] : 물품 보유를 확인하였습니다.");
System.out.println("[알림] : "+p + "를 팔았다! 해당 금액은 " + p.price + ", 금액을 환불받아 잔액은 " + money + ", 포인트는 차감되어 다음과 같습니다 : " + bonusPoint);
sellcount++;
// 배열 재정렬 진행 (item 배열), i는 상품이 저장된 인덱스를 의미함, 기존 배열 위치에 있던 녀석을 다음 인덱스의 녀석으로 덮어버리고 마지막에 null 처리
for (int j = i + 1; j <= item.length; j++) {
if (item[j] != null) {
item[j - 1] = item[j];
} else {
item[j - 1] = null;
break;
}
}
}
}
//위 검색이 끝나고, 판매한 적이 없거나 구매하지 않은 물품일 경우 다음 메시지 출력
if (sellcount == 0) {
System.out.println("[오류] : 해당 물품을 구매하지 않았으므로 팔 수 없습니다. 판매룰 중단합니다.");
}
}
void summary() { // 구매한 물품에 대한 정보를 요약해서 보여 준다.
int sum = 0; // 구입한 물품의 가격합계
String itemList = ""; // 구입한 물품목록 초기화
// 반복문을 이용해서 구입한 물품의 총 가격과 목록을 만든다.
// 판매가 아닌 구매의 경우
for (int i = 0; i < item.length; i++) {
if (item[i] == null) {
break;
}
sum += item[i].price;
itemList += item[i] + ", ";
}
System.out.println("");
System.out.println("[상태 확인] - 보유물품 : " + itemList + " 총 물건 가격 : " + sum + ", 잔액 : " + money + " , 보너스 포인트 : " + bonusPoint);
System.out.println("");
}
}
class PolyArgumentTest2 {
public static void main(String args[]) {
// 바이어 생성
Buyer b = new Buyer();
// 제품 생성 부분
Tv tv = new Tv();
Computer com = new Computer();
Audio audio = new Audio();
iPad ipad = new iPad();
// 물건 구매 진행
b.buy(tv);
b.buy(com);
b.buy(audio);
// 내역 확인 및 잔액 포인트 누계
b.summary();
// 판매부분
b.sell(tv);
b.sell(ipad);
// 내역 확인 및 잔액 포인트 누계
b.summary();
}
}
설정
트랙백
댓글
글
20130522 HCI
/*
자손타입의 참조변수fr로 조상타입의 인스턴스 뉴카를 참조하려고 했기 때문에 에러가 남
*/
package castingtest2;
/**
*
* @author User
*/
class CastingTest2 {
public static void main(String args[]) {
Car car = new FireEngine();
//Car car = new Car();에서 위와 같이 바뀜, 맨처음 만들때 워터 들어가도록 파이어엔진을 만들면 됨, car객체 아닌 파이어 객체 만들어
//fr=(FireEngine)car는 변환 시 문제 발생하지 않음
Car car2 = null;
FireEngine fe = null;
car.drive();
if (car instanceof FireEngine) {
fe = (FireEngine) car; // 8번째 줄. 실행 시 에러가 발생한다.
fe.drive();
car2 = fe;
car2.drive();
}
}
}
class Car {
String color;
int door;
void drive() { // 운전하는 기능
System.out.println("drive, Brrrr~");
}
void stop() { // 멈추는 기능
System.out.println("stop!!!");
}
}
class FireEngine extends Car { // 소방차
void water() { // 물을 뿌리는 기능
System.out.println("water!!!");
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package captiontvtest;
/**
*
* @author User
*/
class Tv {
boolean power; // 전원상태(on/off)
int channel; // 채널
void power() { power = !power; }
void channelUp() { ++channel; }
void channelDown() { --channel; }
}
class CaptionTv extends Tv {// tv를 상속받음
boolean caption; // 캡션상태(on/off)
void displayCaption(String text) {
if (caption) { // 캡션 상태가 on(true)일 때만 text를 보여 준다.
System.out.println(text);
}
}
}
class CaptionTvTest {
public static void main(String args[]) {
CaptionTv ctv = new CaptionTv();
ctv.channel = 10; // 캡션에선 없지만 tv조상 클래스로부터 상속받은 멤버
ctv.channelUp(); // 조상 클래스로부터 상속받은 멤버
System.out.println(ctv.channel);
ctv.displayCaption("Hello, World");
ctv.caption = true; // 캡션기능을 켠다.
ctv.displayCaption("Hello, World"); // 캡션을 화면에 보여 준다.
Tv t = new CaptionTv();
t.channel = 10;
t.channelUp();
System.out.println(t.channel);
//t.displayCaption("Hello, World"); //can not find symbol
//t.caption = true;
//t.displayCaption("Hello, World");
//CaptionTv ctv1 = new Tv();
}
}
////////////////////////////////////////////////////////////////////////////////////////////
/*
자손타입의 참조변수fr로 조상타입의 인스턴스 뉴카를 참조하려고 했기 때문에 에러가 남
*/
package castingtest2;
/**
*
* @author User
*/
class CastingTest2 {
public static void main(String args[]) {
Car car = new FireEngine(); // 아빠 참조변수로 자녀를 참조, 파이어엔진 만들었찌만 카 객체가 있고, 화이트하고 4가 나오게 됨
System.out.println("Color : "+car.color+".Door : " + car.door);
//Car car = new Car();에서 위와 같이 바뀜, 맨처음 만들때 워터 들어가도록 파이어엔진을 만들면 됨, car객체 아닌 파이어 객체 만들어
//fr=(FireEngine)car는 변환 시 문제 발생하지 않음
car.water();
Car car2 = null;
FireEngine fe = null;
car.drive();
if (car instanceof FireEngine) {
fe = (FireEngine) car; // 8번째 줄. 실행 시 에러가 발생한다.
// 자녀의 참조변수를 참고하였기 때문에
System.out.println("Color : "+fe.color+".Door : " + fe.door);
// 오버라이딩 된 녀석이 튀어나옴
fe.water();
//fe.drive();
//car2 = fe;
//car2.drive();
}
}
}
class Car {
String color="White";
int door=4;
void drive() { // 운전하는 기능
System.out.println("drive, Brrrr~");
}
void stop() { // 멈추는 기능
System.out.println("stop!!!");
}
void water()
{
System.out.println("Car Water!!!");
}
}
class FireEngine extends Car { // 소방차
String color="Red";
int door=8;
void water() { // 물을 뿌리는 기능
System.out.println("Car Water!!!");
}
}
설정
트랙백
댓글
글
WINAPI 프로그래밍시 초기화가 'case' 레이블에 의해 생략되었습니다 오류 관련
간단하다, CASE문을 {}로 묶어서 처리하면 에러가 안난다...
case WM_LBUTTONDOWN :
MessageBox(hWnd,"2윈도우의 제목을 바꿉니다.","알림",MB_OK);
SetWindowText(_hWnd2,"Change the world");
break;
case WM_RBUTTONDOWN :
{
MessageBox(hWnd,"우측 클릭해쪄, 메모장에 텍스트 쓴당","알림",MB_OK);
// HWND : 이벤트 발생 윈도우 확인 위한 식별자, 여기선 메모장을 위해서 새로 정의함
HWND hNote;
char textbox[80];
char string1[] = "야! 내가 메모장 안으로 침투한다";
// SPY++를 이용해 매번 바뀌는 메모장의 핸들값을 입력해 준다.
hNote=(HWND)0x000D0604;
HDC hdc;
hdc=GetDC(hNote);
sprintf(textbox,"%s",string1);
TextOut(hdc,0,0,string1,strlen(string1));
ReleaseDC(hNote,hdc);
break;
}
위는 예시 ~_~/
'알아두자 > Windows' 카테고리의 다른 글
자동 백업은 코비안 (0) | 2013.10.09 |
---|---|
윈도우8,7 64비트에서 파이썬 설치 제대로 하기 (0) | 2013.09.15 |
윈도우8 넷북 메트로 사용법 (Intel 계열...) (0) | 2013.03.29 |
Ultraiso로 Windows ISO USB로 만든 뒤 install.wim 오류시 (0) | 2013.03.29 |
나눔코딩글꼴 (0) | 2013.03.27 |